一條 SQL 即可產出核心資料字典,包含表名、欄位名、型別、長度、小數位、允許空、預設值、說明、身分識別、主鍵標記。
SELECT
表名 = CASE WHEN a.colorder = 1 THEN d.name ELSE '' END,
字段名 = a.name,
類型 = b.name,
長度 = 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], '')
FROM syscolumns a
LEFT JOIN systypes b ON a.xtype = b.xusertype
INNER JOIN sysobjects d ON a.id = d.id
AND d.xtype = 'U'
AND d.name <> 'dtproperties'
LEFT JOIN syscomments e ON a.cdefault = e.id
LEFT JOIN sysproperties g ON a.id = g.id
AND a.colid = g.smallid
ORDER BY a.id, a.colorder
| 輸出欄位 | 來源/邏輯 |
|---|---|
| 表名 | 首欄位時顯示 sysobjects.name |
| 字段名 | syscolumns.name |
| 類型 | systypes.name |
| 長度 | COLUMNPROPERTY(..., 'PRECISION') |
| 小數位數 | COLUMNPROPERTY(..., 'Scale') |
| 允許空 | syscolumns.isnullable |
| 預設值 | syscomments.text (透過 cdefault 關聯) |
| 字段說明 | sysproperties.value (MS_Description) |
CASE WHEN COLUMNPROPERTY(a.id,a.name,'IsIdentity')=1 THEN '√' ENDsysindexes/sysindexkeys/sysobjects(xtype='PK')sysproperties smallid=0INFORMATION_SCHEMA.COLUMNS 與 sys.extended_properties此查詢相容 SQL Server 2000/2005/2008,可直接在查詢分析器執行並匯出 Excel 作為資料字典文件。