Hymen

在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 表

分类:

技术点:

相关文章: