.NET 組件具備中繼資料自描述能力,資料庫若能同樣「自描述」,即可省去人工維護 Excel/Word 資料字典的麻煩,且說明隨備份/脫離同步移動,不易遺失。
SSMS 建立資料表時即可填寫「描述」,對應 MS_Description 擴充屬性。
CREATE VIEW [dbo].[DOC_vwColumns] AS
-- 資料表欄位說明
-- 作者:RickyLin, https://Ricky81317.cnblogs.com/
SELECT T.TABLE_NAME, C.COLUMN_NAME, C.DATA_TYPE, C.CHARACTER_MAXIMUM_LENGTH,
C.IS_NULLABLE, P.[value] AS ColumnDescription
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON C.TABLE_NAME = T.TABLE_NAME
LEFT JOIN sys.extended_properties P
ON P.major_id = OBJECT_ID(T.TABLE_NAME)
AND P.minor_id = C.ORDINAL_POSITION
AND P.[name] = 'MS_Description'
WHERE T.TABLE_TYPE = 'BASE TABLE';
-- ORDER BY T.TABLE_NAME, C.ORDINAL_POSITION
查詢此視圖並加 WHERE 即可篩選特定資料表欄位說明。
建立物件後,在 SSMS 物件總管右鍵 → Properties → Extended Properties,新增名為 ObjectDescription 的屬性填寫說明。
CREATE VIEW [dbo].[DOC_vwObjects] AS
-- 資料庫物件說明
SELECT T.[object_id] AS ObjectID, T.[name] AS ObjectName, T.[type] AS ObjectType, P.[value] AS ObjectDescription
FROM sys.objects T
LEFT JOIN sys.extended_properties P ON P.major_id = T.[object_id]
WHERE P.[name] = 'ObjectDescription';