.NET 組件擁有豐富的中繼資料,實現「自描述」,開發體驗極佳。反觀資料庫,結構描述、欄位用途、業務含義往往散落在 Excel、Word、Wiki 等外部文件,維護成本高、易脫節、版本難控。SQL Server 內建擴充屬性與完整的系統目錄檢視,完美支援將描述資訊內嵌於資料庫物件中,隨備份/還原/分離附帶遷移,實現真正的自描述。
DOC_vwColumns利用 SSMS 設計表時即可填寫的「描述」屬性(對應 MS_Description 擴充屬性),結合 INFORMATION_SCHEMA.COLUMNS 系統檢視:
CREATE VIEW [dbo].[DOC_vwColumns] AS
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';
查詢此檢視即可獲得所有資料表欄位的型別、長度、允許空值及說明,支援 WHERE 篩選特定資料表。
DOC_vwObjects針對資料表、檢視表、預存程序、函數等物件,建立完成後在 SSMS 物件總管 → 右鍵屬性 → 擴充屬性,新增名為 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]
AND P.NAME = 'ObjectDescription';
SELECT * FROM DOC_vwColumns 複製貼上即得。BusinessDomain, DataSensitivity, OwnerTeam),支援資料治理。sys.schemas、sys.indexes、sys.foreign_keys 擴充檢視,涵蓋索引、外鍵、檢查約束說明。善用 SQL Server 內建擴充屬性與系統目錄,以極低成本構建自描述資料庫,解決「文件與代碼脫節」的經典難題。這不僅提升團隊協作效率,更為資料治理、合規稽核奠定堅實基礎。從今天開始,將描述寫進資料庫,讓文件活起來!