首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

善用擴充屬性讓 SQL Server 資料庫實現自文件化:免維護外部資料字典

     編輯:關於SqlServer

動機

.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';

優勢總結

  • 說明資訊內建於資料庫,備份/還原/脫離附加自動同步
  • 查詢視圖即可取得最新文件,匯出 Excel 只需複製貼上
  • 開發、DBA、測試人員共享同一份即時說明
  • 無需額外工具,純 T-SQL 實現
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved