SQL Server 数据库对象的扩展属性

使用扩展属性,您可以添加文本(如描述性或指导性内容)、输入掩码和格式规则,将它们作为数据库中的对象或数据库自身的属性。例如,您可以将扩展属性添加到架构、架构的视图或视图中的列。由于扩展属性存储在数据库中,所有读取属性的应用程序都能以相同的方式评估对象。这有助于加强系统中所有程序对数据的处理方式的一致性。

扩展属性可以用于:

  • 指定表、视图或列的标题。这样,应用程序便可以在显示该表、该视图或该列的信息的用户界面中使用同一标题。
  • 为列指定输入掩码,以便应用程序可以在运行 Transact-SQL 语句之前验证数据。例如,可以在扩展属性中指定邮政编码或电话号码列的所需格式。
  • 指定数据在列中的显示格式规则。
  • 记录应用程序可显示给用户的特定数据库对象的描述。例如,这些描述可用在数据字典应用程序或报表中。
  • 指定某列显示的大小和窗口位置。

我个人用得最多的是,在扩展属性中提供字段的描述,以便在生成数据库文档的时候有用

 

--定义扩展属性

在以下示例中,将扩展属性值 'Minimum inventory quantity.' 添加到 Production 架构所包含的 Product 表中的 SafetyStockLevel 列。

USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'Minimum inventory quantity.', 
@level0type = N'SCHEMA', @level0name = Production, 
@level1type = N'TABLE',  @level1name = Product,
@level2type = N'COLUMN', @level2name = SafetyStockLevel;
GO

每个扩展属性都有用户定义的名称和值。扩展属性值是 sql_variant 值,最多可包含 7,500 个字节的数据。可以向一个对象添加多个扩展属性。

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

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

USE AdventureWorks;

GO

SELECT objtype, objname, name, value

FROM fn_listextendedproperty(default, default, default, default, default, default, default);

GO

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

USE AdventureWorks;

GO

SELECT objtype, objname, name, value

FROM fn_listextendedproperty (NULL, 'schema', 'dbo', 'table', default, NULL, NULL);

GO

--查看整个数据库所有对象的扩展属性

USE AdventureWorks;

GO

SELECT class, class_desc, major_id, minor_id, name, value

FROM sys.extended_properties;

GO

--查看数据库表中所有列的扩展属性

USE AdventureWorks;
GO
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;
GO
如果需要在管理工具中定义或者查看扩展属性,那么选中数据库对象(例如数据库,表,视图,列等等),在右键菜单中,找到"属性",然后就可以看到下面这样的窗口
image 
posted @ 2008-06-19 14:54  陈希章  阅读(3980)  评论(0编辑  收藏  举报