当前位置:Gxlcms > 数据库问题 > 关于数据库对象的扩展属性

关于数据库对象的扩展属性

时间:2021-07-01 10:21:17 帮助过:1人阅读

OBJECT_ID(NT8) IS NOT NULL BEGIN DROP TABLE T8 END GO CREATE TABLE T8 ( id INT NOT NULL, name NVARCHAR(20) ) GO

code-1

 

添加表的扩展属性:在Object Explorer中找到新建的表,右键选择属性。

技术分享

 figure-1

 

点击扩展属性,即可进行添加、修改和删除。

技术分享

 figure-2

 

添加字段的扩展属性。

技术分享

 figure-3

 

字段属性——描述,添加注释内容。

技术分享

 figure-4

 

 

保存后,即可完成对字段扩展属性的添加。可通过系统视图sys.extended_properties进行查询。

SELECT *,OBJECT_NAME(major_id) AS obj_name FROM sys.extended_properties

 code-2

 

从下图可看到,刚才在SSMS上添加的属性已经被查询出来。默认的扩展属性名是MS_Description。

技术分享

 figure-5

 

系统视图sys.extended_properties每个字段的详细说明,可查阅SQL联机从书。除了系统视图,也可以通过函数fn_listextendedproperty查询。

SELECT objtype, objname, name, value
FROM fn_listextendedproperty(default, SCHEMA, dbo, TABLE, T8, default, default);

SELECT objtype,objname,name,value
FROM fn_listextendedproperty(default, SCHEMA, dbo, TABLE, T8, COLUMN, id);

SELECT objtype,objname,name,value
FROM fn_listextendedproperty(default, SCHEMA, dbo, TABLE, T8, COLUMN, name);

 code-3

 

技术分享

figure-6

 

扩展属性可以使用相关的存储过程进行维护。再执行code-1的代码,重建测试表,相关的属性也会删除。执行存储过程sp_addextendedproperty 进行添加。存储过程的参数使用,请查阅文档,本文末尾提供链接。

EXEC sp_addextendedproperty 
@name = NMS_Description,
@value = NThis is a table description on [T8](2).,
@level0type = NSCHEMA, @level0name = Ndbo,
@level1type = NTABLE, @level1name = NT8
GO

EXEC sp_addextendedproperty 
@name = NMS_Description,
@value = NThis is a column description on [id](2).,
@level0type = NSCHEMA, @level0name = Ndbo,
@level1type = NTABLE, @level1name = NT8,
@level2type = NCOLUMN, @level2name = Nid
GO

EXEC sp_addextendedproperty 
@name = NMS_Description,
@value = NThis is a column description on [name](2).,
@level0type = NSCHEMA, @level0name = Ndbo,
@level1type = NTABLE, @level1name = NT8,
@level2type = NCOLUMN, @level2name = Nname
GO

code-4

 

查询sys.extended_properties,已经成功添加表和字段的扩展属性。

技术分享

figure-7

 

执行sp_dropextendedproperty删除现有扩展属性。

EXEC sp_dropextendedproperty 
@name = NMS_Description,
@level0type = NSCHEMA, @level0name = Ndbo,
@level1type = NTABLE, @level1name = NT8,
@level2type = NCOLUMN, @level2name = Nname
GO

code-5

 

再查询sys.extended_properties,字段name的扩展属性已经被删除。

技术分享

 figure-8

 

使用sp_updateextendedproperty更新扩展属性。

EXEC sp_updateextendedproperty 
@name = NMS_Description,
@value = NThis is a column description on [id](3).,
@level0type = NSCHEMA, @level0name = Ndbo,
@level1type = NTABLE, @level1name = NT8,
@level2type = NCOLUMN, @level2name = Nid
GO

code-6

 

技术分享

figure-9

 

不仅表可以添加扩展属性,其他数据库对象也可以,如数据库,索引等。

USE AdventureWorks2008R2;
GO

SELECT *,OBJECT_NAME(major_id) AS obj_name FROM sys.extended_properties
GO

code-7

 

技术分享

figure-10

 

技术分享

figure-11

 

 

参考文档:

对数据库对象使用扩展属性:

https://technet.microsoft.com/zh-cn/library/ms190243%28v=sql.105%29.aspx

查看扩展属性:

https://technet.microsoft.com/zh-cn/library/ms186989%28v=sql.105%29.aspx

sys.extended_properties:

https://technet.microsoft.com/zh-cn/library/ms177541%28v=sql.105%29.aspx

sp_addextendedproperty:

https://technet.microsoft.com/zh-cn/library/ms180047%28v=sql.105%29.aspx

sp_dropextendedproperty:

https://technet.microsoft.com/zh-cn/library/ms178595%28v=sql.105%29.aspx

sp_updateextendedproperty:

https://technet.microsoft.com/zh-cn/library/ms186885%28v=sql.105%29.aspx

fn_listextendedproperty:

https://technet.microsoft.com/zh-cn/library/ms179853%28v=sql.105%29.aspx

 

关于数据库对象的扩展属性

标签:

人气教程排行