sp_addextendedproperty:新增/修改說明sp_dropextendedproperty:刪除說明sp_updateextendedproperty:更新說明(同新增)EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = N'這裡填寫欄位說明文字',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'TableName',
@level2type = N'COLUMN', @level2name = N'ColumnName';
EXEC sp_dropextendedproperty
@name = N'MS_Description',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'TableName',
@level2type = N'COLUMN', @level2name = N'ColumnName';
SELECT
TABLE_NAME AS [Table Name],
COLUMN_NAME AS [Column Name],
value AS [Description]
FROM INFORMATION_SCHEMA.COLUMNS c
LEFT JOIN sys.extended_properties ep
ON ep.major_id = OBJECT_ID(c.TABLE_SCHEMA + '.' + c.TABLE_NAME)
AND ep.minor_id = c.ORDINAL_POSITION
AND ep.name = 'MS_Description'
AND ep.class = 1
WHERE OBJECTPROPERTY(OBJECT_ID(c.TABLE_SCHEMA + '.' + c.TABLE_NAME), 'IsMsShipped') = 0
ORDER BY TABLE_NAME, ORDINAL_POSITION;
SELECT
COLUMN_NAME AS [Column Name],
value AS [Description]
FROM INFORMATION_SCHEMA.COLUMNS c
LEFT JOIN sys.extended_properties ep
ON ep.major_id = OBJECT_ID('dbo.TableName')
AND ep.minor_id = c.ORDINAL_POSITION
AND ep.name = 'MS_Description'
AND ep.class = 1
WHERE TABLE_NAME = 'TableName'
ORDER BY ORDINAL_POSITION;
| 參數 | 說明 | 固定值/範例 |
|---|---|---|
| @name | 屬性名稱 | MS_Description (標準) |
| @value | 說明內容 | 任意 NVARCHAR |
| @level0type | 第 0 層類型 | SCHEMA |
| @level0name | 第 0 層名稱 | dbo |
| @level1type | 第 1 層類型 | TABLE |
| @level1name | 第 1 層名稱 | 表名 |
| @level2type | 第 2 層類型 | COLUMN |
| @level2name | 第 2 層名稱 | 欄位名 |
-- 表說明
EXEC sp_addextendedproperty 'MS_Description', '表用途說明', 'SCHEMA', 'dbo', 'TABLE', 'TableName';
-- 索引說明
EXEC sp_addextendedproperty 'MS_Description', '索引用途', 'SCHEMA', 'dbo', 'TABLE', 'TableName', 'INDEX', 'IndexName';
sp_addextendedproperty,納入版控。MS_Description 為標準,避免自訂名稱導致工具無法識別。善用擴充屬性,讓資料庫自我文檔化,降低溝通成本與維護風險。