SQL SERVER中的扩展属性

以前在SQL SERVER建表时,总看到扩展属性,但一直未使用过。今天研究下:

增加扩展属性:

语法:

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' } 
                        ] 
                ]
        ] 
    ] 

注明:为了指定扩展属性,将 SQL Server 数据库中的对象分为三个级别:0、1 和 2。级别 0 是最高级别,该级别被定义为在数据库作用域包含的对象。级别 1 的对象包含在架构作用域或用户作用域中,而级别 2 的对象包含在级别 1 对象中。可以为这些级别中任一级别的对象定义扩展属性。

将扩展属性添加到数据库中

EXEC sp_addextendedproperty 
@name = N'Caption', @value = ' OLTP Database';

将输入掩码属性添加到列中

EXEC sp_addextendedproperty
@name= N'Input Mask ', @value='99999 or 99999-9999 or #### ###',
@level0type= N'Schema', @level0name= Person,
@level1type= N'Table', @level1name= Address,
@level2type= N'Column',@level2name= PostalCode;

将扩展属性添加到表中的列

EXEC sp_addextendedproperty 
@name = N'Caption', @value = 'Postal code is a required column.',
@level0type = N'Schema', @level0name = dbo,
@level1type = N'Table',  @level1name = Address,
@level2type = N'Column', @level2name = PostalCode;

将扩展属性添加到文件组中

EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'Primary filegroup for the AdventureWorks sample database.', 
@level0type = N'FILEGROUP', @level0name = [PRIMARY];
查看扩展属性:
SELECT major_id, minor_id, t.name AS [Table Name], c.name AS [Column Name], value AS [Extended Property]
FROM sys.extended_properties AS ep
INNER JOIN sys.tables AS t ON ep.major_id = t.object_id 
INNER JOIN sys.columns AS c ON ep.major_id = c.object_id AND ep.minor_id = c.column_id
WHERE class = 1;

  查看数据库级别的扩展属性

SELECT objtype, objname, name, value
FROM fn_listextendedproperty(default, default, default, default, default, default, default);

查看某个架构中所有表的扩展属性

SELECT objtype, objname, name, value
FROM fn_listextendedproperty (NULL, 'schema', 'dbo', 'table', default, NULL, NULL);

 

posted @ 2013-08-22 09:19  家有良田三亩八  阅读(431)  评论(0编辑  收藏  举报