/*
在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
EXECUTE
sp_addextendedproperty N
'MS_Description'
,
'姓名'
, N
'user'
, N
'dbo'
, N
'table'
, N
'表'
, N
'column'
, N
'a1'
EXECUTE
sp_addextendedproperty N
'MS_Description'
,
'性別'
, N
'user'
, N
'dbo'
, N
'table'
, N
'表'
, N
'column'
, N
'a2'
EXEC
sp_updateextendedproperty
'MS_Description'
,
'字段1'
,
'user'
,dbo,
'table'
,
'表'
,
'column'
,a1
EXEC
sp_dropextendedproperty
'MS_Description'
,
'user'
,dbo,
'table'
,
'表'
,
'column'
,a1
drop
table
表