所有資料庫物件資訊皆儲於系統表。sysobjects 最實用欄位:
name:物件名稱。xtype:物件類型代碼。| 代碼 | 類型 |
|---|---|
| C | CHECK 約束 |
| D | DEFAULT 約束 |
| F | FOREIGN KEY 約束 |
| L | Log |
| P | 預存程序 |
| PK | PRIMARY KEY 約束 |
| RF | 複寫篩選預存程序 |
| S | 系統資料表 |
| TR | 觸發器 |
| U | 使用者資料表 |
| UQ | UNIQUE 約束 |
| V | 檢視 |
| X | 擴展預存程序 |
SELECT * FROM sysobjects WHERE xtype = '<type>';
SELECT
Sys2.name AS TableName,
Sys1.name AS TriggerName,
CASE
WHEN Sys1.deltrig > 0 THEN 'DELETE'
WHEN Sys1.instrig > 0 THEN 'INSERT'
WHEN Sys1.updtrig > 0 THEN 'UPDATE'
END AS TriggerType
FROM sysobjects Sys1
JOIN sysobjects Sys2 ON Sys1.parent_obj = Sys2.id
WHERE Sys1.xtype = 'TR'
ORDER BY TableName;
系統檢視將查詢與微軟對系統表的未來變更隔離,更穩健。
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES ORDER BY TABLE_SCHEMA, TABLE_NAME;
SELECT * FROM INFORMATION_SCHEMA.ROUTINES ORDER BY ROUTINE_TYPE, ROUTINE_NAME;
共有 20 種資訊結構描述檢視。無法負擔商業文件工具(Red Gate、Apex)時,善用這些檢視配合少量腳本,即可讓 SQL Server 自動生成資料庫文件。