您的位置:首页 > 数据库

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

2015-08-20 01:36 399 查看
今天有人问有没有办法查看表的注释,或查询所有表的注释。这里所说的表或表字段等的注释,其实是数据库对象的扩展属性。在MSSQL中,支持把一些注释性的内容放到数据库或数据库对象中,增强可读性,有助于日后的管理和维护工作。扩展属性的内容可以通过SSMS添加、修改或删除,也可以通过系统视图查询,通过执行相关的存储过程来维护。

创建一张测试表:

IF OBJECT_ID(N'T8') IS NOT NULL
BEGIN
DROP TABLE T8
END
GO

CREATE TABLE T8 (
id INT NOT NULL,
name NVARCHAR(100)
)
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 = N'MS_Description',
@value = N'This is a table description on [T8](2).',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'T8'
GO

EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = N'This is a column description on [id](2).',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'T8',
@level2type = N'COLUMN', @level2name = N'id'
GO

EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = N'This is a column description on [name](2).',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'T8',
@level2type = N'COLUMN', @level2name = N'name'
GO


code-4

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



figure-7

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

EXEC sp_dropextendedproperty
@name = N'MS_Description',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'T8',
@level2type = N'COLUMN', @level2name = N'name'
GO


code-5

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



figure-8

使用sp_updateextendedproperty更新扩展属性。

EXEC sp_updateextendedproperty
@name = N'MS_Description',
@value = N'This is a column description on [id](3).',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'T8',
@level2type = N'COLUMN', @level2name = N'id'
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: