SQL Server 2005 使用擴充屬性 (MS_Description) 儲存欄位說明。本文提供直接可用的查詢腳本,支援指定資料表名稱。
DECLARE @tblName NVARCHAR(1000) = N'你的資料表名稱'; -- 修改此處
DECLARE @TblID INT;
SELECT @TblID = [object_id]
FROM sys.all_objects
WHERE [type] = 'U'
AND [name] <> 'dtproperties'
AND [name] = @tblName;
SELECT
sc.[name] AS ColumnName,
st.[name] AS ColumnType,
sc.[max_length] AS ColumnLength,
ep.[value] AS ColumnDescription
FROM sys.columns sc
LEFT JOIN sys.types st
ON st.user_type_id = sc.user_type_id
LEFT JOIN sys.extended_properties ep
ON ep.major_id = sc.object_id
AND ep.minor_id = sc.column_id
AND ep.name = 'MS_Description'
AND ep.class = 1 -- 1 = Object/Column
WHERE sc.object_id = @TblID
ORDER BY sc.column_id;
| 視圖 | 用途 |
|---|---|
sys.all_objects | 取得資料表 object_id |
sys.columns | 欄位中繼資料 (名稱、型別、長度、column_id) |
sys.types | 資料型別名稱 |
sys.extended_properties | 擴充屬性儲存 (MS_Description) |
' 新增
EXEC sys.sp_addextendedproperty
@name = N'MS_Description',
@value = N'客戶唯一識別碼',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'Customers',
@level2type = N'COLUMN', @level2name = N'CustomerID';
' 修改 (先刪後加或用 sp_updateextendedproperty)
EXEC sys.sp_updateextendedproperty
@name = N'MS_Description',
@value = N'更新後的說明',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'Customers',
@level2type = N'COLUMN', @level2name = N'CustomerID';
SELECT
SCHEMA_NAME(o.schema_id) AS SchemaName,
o.name AS TableName,
c.name AS ColumnName,
t.name AS DataType,
c.max_length AS MaxLength,
ep.value AS Description
FROM sys.objects o
JOIN sys.columns c ON c.object_id = o.object_id
JOIN sys.types t ON t.user_type_id = c.user_type_id
LEFT JOIN sys.extended_properties ep
ON ep.major_id = c.object_id
AND ep.minor_id = c.column_id
AND ep.name = 'MS_Description'
AND ep.class = 1
WHERE o.type = 'U' -- User Table
ORDER BY SchemaName, TableName, c.column_id;
syscolumns、systypes、::fn_listextendedproperty (舊語法)sys.columns、sys.types、sys.extended_propertiessyscomments、sysobjects 等舊視圖已棄用,僅為相容保留善用擴充屬性與標準查詢,讓資料字典隨資料庫演進自動同步,是資料治理的基礎建設。