一條可直接執行的 T-SQL 查詢,完整輸出指定資料表的欄位定義、主鍵、外鍵關聯、擴充屬性 (說明)、預設值、建立/修改時間等中繼資料,適用於資料字典產生、文件化與異動比對。
SELECT
表名 = CASE WHEN a.colorder = 1 THEN d.name ELSE '' END,
表說明 = CASE WHEN a.colorder = 1 THEN ISNULL(f.value, '') ELSE '' END,
字段序號 = a.colorder,
字段名 = a.name,
標識 = CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END,
主鍵 = CASE WHEN EXISTS (
SELECT 1 FROM dbo.sysindexes si
INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid
INNER JOIN dbo.syscolumns sc ON sc.id = sik.id AND sc.colid = sik.colid
INNER JOIN dbo.sysobjects so ON so.name = si.name AND so.xtype = 'PK'
WHERE sc.id = a.id AND sc.colid = a.colid
) THEN '√' ELSE '' END,
外鍵 = CASE WHEN fk.fkey IS NOT NULL AND fk.fkey = a.colid THEN '√' ELSE '' END,
外鍵表 = CASE WHEN fk.fkey IS NOT NULL AND fk.fkey = a.colid THEN OBJECT_NAME(fk.fkeyid) ELSE '' END,
外鍵欄位 = CASE WHEN fk.fkey IS NOT NULL AND fk.fkey = a.colid
THEN (SELECT name FROM syscolumns WHERE colid = fk.fkey AND id = fk.fkeyid)
ELSE '' END,
類型 = b.name,
長度 = a.length,
精度 = COLUMNPROPERTY(a.id, a.name, 'PRECISION'),
小數位數 = ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0),
允許空值 = CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END,
預設值 = ISNULL(e.text, ''),
字段說明 = ISNULL(g.[value], ''),
建立時間 = d.crdate,
修改時間 = CASE WHEN a.colorder = 1 THEN d.refdate ELSE NULL END
FROM dbo.syscolumns a
LEFT JOIN dbo.systypes b ON a.xtype = b.xusertype
INNER JOIN dbo.sysobjects d ON a.id = d.id AND d.xtype = 'U' AND d.status >= 0
LEFT JOIN dbo.syscomments e ON a.cdefault = e.id
LEFT JOIN sys.extended_properties g ON a.id = g.major_id AND a.colid = g.minor_id
LEFT JOIN sys.extended_properties f ON d.id = f.major_id AND f.minor_id = 0
LEFT JOIN sysobjects fk_obj ON fk_obj.parent_obj = d.id AND fk_obj.xtype = 'F'
LEFT JOIN sysforeignkeys fk ON fk_obj.id = fk.constid
WHERE d.name = 'YourTableName' -- 修改為目標表名
ORDER BY d.id, a.colorder;
| 輸出欄位 | 來源/邏輯 |
|---|---|
| 表名/表說明 | 僅首列顯示,取自 sysobjects 與擴充屬性 MS_Description |
| 標識 | COLUMNPROPERTY(..., 'IsIdentity') |
| 主鍵 | 關聯 sysindexes/sysindexkeys/sysobjects(xtype='PK') 判斷 |
| 外鍵/外鍵表/外鍵欄位 | 關聯 sysforeignkeys 透過約束物件取得參考表與欄位 |
| 類型/長度/精度/小數位 | systypes 與 COLUMNPROPERTY |
| 預設值 | syscomments 文字 |
| 字段說明 | 欄位層級擴充屬性 MS_Description |
WHERE d.name = '...' 改為 LIKE 或移除以查詢多張表。sp_addextendedproperty 維護說明,打造完整資料字典。INFORMATION_SCHEMA.COLUMNS 與 sys.foreign_keys 等標準檢視,相容性更好。