/*
在SQL語句中通過系統存儲過sp_addextendedproperty可為表字段添加上動態的說明(備注)下面是SQL SERVER幫助文檔中對sp_addextendedproperty存儲過程的描述
語法
*/
sp_addextendedproperty
[ @
name
= ] {
'property_name'
}
[ , [ @value = ] {
'value'
}
[ , [ @level0type = ] {
'level0_object_type'
}
, [ @level0name = ] {
'level0_object_name'
}
[ , [ @level1type = ] {
'level1_object_type'
}
, [ @level1name = ] {
'level1_object_name'
}
[ , [ @level2type = ] {
'level2_object_type'
}
, [ @level2name = ] {
'level2_object_name'
}
]
]
]
]
參數
[ @
name
= ] {
'property_name'
}
要添加的屬性名稱。property_name 的數據類型為 sysname,它不能是
NULL
。名稱可能還包括空白或非字母數字字符串和二進制值。
[ @value = ] {
'value'
}
將要與屬性相關聯的值。value 的數據類型為 sql_variant,帶有默認設置
NULL
。value 的大小不能超過 7,500 字節;否則 SQL Server 會產生錯誤。
[ @level0type = ] {
'level0_object_type'
}
用戶或用戶定義類型。level0_object_type 的數據類型為
varchar
(128),其默認值為
NULL
。有效的輸入是
USER
、TYPE 和
NULL
。
[ @level0name = ] {
'level0_object_name'
}
指定的 0 級對象類型的名稱。level0_object_name 的數據類型為 sysname,其默認值為
NULL
。
[ @level1type = ] {
'level1_object_type'
}
1 級對象的類型。level1_object_type 的數據類型為
varchar
(128),其默認值為
NULL
。有效的輸入是
TABLE
、
VIEW
、
PROCEDURE
、
FUNCTION
、
DEFAULT
、
RULE
和
NULL
。
[ @level1name = ] {
'level1_object_name'
}
指定的 1 級對象類型的名稱。level1_object_name 的數據類型為 sysname,其默認值為
NULL
。
[ @level2type = ] {
'level2_object_type'
}
2 級對象的類型。level2_object_type 的數據類型為
varchar
(128),其默認值為
NULL
。有效的輸入是
COLUMN
、PARAMETER、
INDEX
、
CONSTRAINT
、
TRIGGER
和
NULL
。
[ @level2name = ] {
'level2_object_name'
}
指定的 2 級對象類型的名稱。level2_object_name 的數據類型為 sysname,其默認值為
NULL
。
返回代碼值
0(成功)或 1(失敗)
注釋
系統對象不允許有擴展屬性。
對象是按級別區分的,0 級為最高,2 級為最低。當用戶添加、更新或刪除擴展屬性時,必須指定所有更高級別的對象。例如,如果用戶要向 1 級對象添加擴展屬性,就必須指定所有 0 級信息。如果用戶要向 2 級對象添加擴展屬性,則必須提供關於 0 級和 1 級的所有信息。
在每個級別上,對象類型和對象名可唯一地標識對象。如果指定了一個對中的任一方,則必須指定另一方。
給定了有效 property_name 和 value,如果沒有任何對象類型和名稱,則屬性屬於當前數據庫。如果指定對象類型和名稱,則還必須指定父對象和類型。否則,SQL Server 會產生錯誤。
權限
db_owner 和 db_ddladmin 固定數據庫角色的成員可以將擴展屬性添加到任何對象中。用戶可以為他們所擁有的對象添加擴展屬性。然而,只有 db_owner 可以將屬性添加到用戶名稱中。
下面是我在使用過程中對表ClipInfo的字段通過sp_addextendedproperty存儲過程加的說明,
ALTER
TABLE
[dbo].[ClipInfo]
ADD
CONSTRAINT
[PK_CLIPINFO]
PRIMARY
KEY
CLUSTERED ([ClipNum])
GO
sp_addextendedproperty N
'MS_Description'
, N
'卡號'
,
'USER'
, N
'dbo'
,
'TABLE'
, N
'ClipInfo'
,
'COLUMN'
, N
'ClipNum'
GO
sp_addextendedproperty N
'MS_Description'
, N
'密碼'
,
'USER'
, N
'dbo'
,
'TABLE'
, N
'ClipInfo'
,
'COLUMN'
, N
'Passd'
GO
sp_addextendedproperty N
'MS_Description'
, N
'所屬地'
,
'USER'
, N
'dbo'
,
'TABLE'
, N
'ClipInfo'
,
'COLUMN'
, N
'ClipArea'
GO
sp_addextendedproperty N
'MS_Description'
, N
'創建時間'
,
'USER'
, N
'dbo'
,
'TABLE'
, N
'ClipInfo'
,
'COLUMN'
, N
'CreateTime'
GO
sp_addextendedproperty N
'MS_Description'
, N
'修改時間'
,
'USER'
, N
'dbo'
,
'TABLE'
, N
'ClipInfo'
,
'COLUMN'
, N
'UpdateTime'
GO
sp_addextendedproperty N
'MS_Description'
, N
'狀態'
,
'USER'
, N
'dbo'
,
'TABLE'
, N
'ClipInfo'
,
'COLUMN'
, N
'ClipState'
GO
select
*
from
sys.extended_properties a
where
a.major_id=object_id(
'ta'
)
select
*
from
sys.extended_properties
select
*
from
syscolumns
where
id=object_id(
'ta'
)
列出表
"t"
中所有列的所有擴展屬性:
SELECT
*
FROM
::fn_listextendedproperty(
NULL
,
'user'
,
'dbo'
,
'table'
,
'ta'
,
'column'
,
default
)
列出表
"t"
中列col1的描述屬性:
SELECT
value
FROM
::fn_listextendedproperty(
'MS_Description'
,
'user'
,
'dbo'
,
'table'
,
'ta'
,
'column'
,
'id'
)
添加表
"t"
中列col1的描述屬性:
EXEC
sp_addextendedproperty
'MS_Description'
,
'列1'
,
'user'
,dbo,
'table'
,
't'
,
'column'
,col1
刪除表
"t"
中列col1的描述屬性:
EXEC
sp_dropextendedproperty
'MS_Description'
,
'user'
,dbo,
'table'
,
't'
,
'column'
,col1
更新表
"t"
中列col1的描述屬性:
EXEC
sp_updateextendedproperty
'MS_Description'
,
'字段1'
,
'user'
,dbo,
'table'
,
't'
,
'column'
,col1
--表及字段描述信息處理示例
--創建表
create
table
表(a1
varchar
(10),a2
char
(2))
--為表添加描述信息
EXECUTE
sp_addextendedproperty N
'MS_Description'
,
'人員信息表'
, N
'user'
, N
'dbo'
, N
'table'
, N
'表'
,
NULL
,
NULL
--為字段a1添加描述信息
EXECUTE
sp_addextendedproperty N
'MS_Description'
,
'姓名'
, N
'user'
, N
'dbo'
, N
'table'
, N
'表'
, N
'column'
, N
'a1'
--為字段a2添加描述信息
EXECUTE
sp_addextendedproperty N
'MS_Description'
,
'性別'
, N
'user'
, N
'dbo'
, N
'table'
, N
'表'
, N
'column'
, N
'a2'
--更新表中列a1的描述屬性:
EXEC
sp_updateextendedproperty
'MS_Description'
,
'字段1'
,
'user'
,dbo,
'table'
,
'表'
,
'column'
,a1
--刪除表中列a1的描述屬性:
EXEC
sp_dropextendedproperty
'MS_Description'
,
'user'
,dbo,
'table'
,
'表'
,
'column'
,a1
--刪除測試
drop
table
表