一條經典查詢涵蓋資料字典核心欄位,可依專案需求調整:
SELECT
sysobjects.name AS [table],
sysproperties.[value] AS 表說明,
syscolumns.name AS field,
properties.[value] AS 字段說明,
systypes.name AS type,
syscolumns.length,
ISNULL(COLUMNPROPERTY(syscolumns.id, syscolumns.name, 'Scale'), 0) AS 小數位數,
syscolumns.isnullable AS isnull,
CASE WHEN syscomments.text IS NULL THEN '' ELSE syscomments.text END AS [Default],
CASE WHEN COLUMNPROPERTY(syscolumns.id, syscolumns.name, 'IsIdentity') = 1 THEN '√' ELSE '' END AS 標識,
CASE WHEN EXISTS (
SELECT 1 FROM sysobjects
WHERE xtype = 'PK' AND name IN (
SELECT name FROM sysindexes
WHERE indid IN (
SELECT indid FROM sysindexkeys
WHERE id = syscolumns.id AND colid = syscolumns.colid
)
)
) THEN '√' ELSE '' END AS 主鍵
FROM syscolumns
INNER JOIN sysobjects ON sysobjects.id = syscolumns.id
INNER JOIN systypes ON syscolumns.xtype = systypes.xtype
LEFT OUTER JOIN sysproperties properties ON syscolumns.id = properties.id
AND syscolumns.colid = properties.smallid
LEFT OUTER JOIN sysproperties ON sysobjects.id = sysproperties.id
AND sysproperties.smallid = 0
LEFT OUTER JOIN syscomments ON syscolumns.cdefault = syscomments.id
WHERE sysobjects.xtype = 'U'
| 輸出 | 來源 | 備註 |
|---|---|---|
| table | sysobjects.name | 使用者資料表 (xtype='U') |
| 表說明 | sysproperties.value (smallid=0) | MS_Description |
| field | syscolumns.name | |
| 字段說明 | sysproperties.value (colid=smallid) | MS_Description |
| type | systypes.name | 資料型別名稱 |
| length | syscolumns.length | 儲存長度 |
| 小數位數 | COLUMNPROPERTY(..., 'Scale') | |
| isnull | syscolumns.isnullable | 1=允許 NULL |
| Default | syscomments.text | 透過 cdefault 關聯 |
| 標識 | COLUMNPROPERTY(..., 'IsIdentity') | |
| 主鍵 | 多層關聯 sysindexes/keys/objects | xtype='PK' |
精度:COLUMNPROPERTY(..., 'PRECISION')建立/修改時間:sysobjects.crdate/refdatesys.extended_properties 取代 syspropertiesORDER BY sysobjects.name, syscolumns.colorder此查詢為眾多資料字典產生器的基礎範本,理解其關聯邏輯可自行擴充客製化欄位。