SQL Server 2000 引入了扩展属性,用户可在各种数据库对象上定义这些属性。这些扩展属性可用于存储与数据库对象有关的应用程序或站点特有的信息。因为属性存储在数据库中,所有读取属性的应用程序都能以相同的方式评估对象。这有助于在系统中的所有程序对数据的处理方式上强制一致性。
每个扩展属性都有用户定义的名称和值。扩展属性值为最多可包含 7,500 字节数据的 sql_variant 值。
扩展属性的可能用途包括:
- 指定表、视图或列的标题。这样,所有应用程序都可在显示表、视图或列信息的用户界面中使用该标题。
- 指定列的输入掩码,以便所有应用程序都可在执行 Transact-SQL 语句前验证数据。
- 指定关于在列中显示数据的格式规则。
- 记录应用程序可显示给用户的对特定数据库对象的描述。
- 指定应显示的列大小和窗口位置。
SQL Server 2000提供了三个系统存储过程和一个函数用于操作扩展属性。它们分别是:
- sp_addextendedproperty(将新扩展属性添加到数据库对象中。)
- sp_updateextendedproperty(更新现有扩展属性的值。)
- sp_dropextendedproperty(除去现有的扩展属性。)
- fn_listextendedproperty(列出扩展属性)
下面使用一个例子来说明这些函数的用法。我打算在SQLServer 提供的示例数据库Northwind中的表Categories中的Column CategoryID添加一个Description扩展属性,用以描述CategoryID的用途,可以如下做:
sp_addextendedproperty 'Description', '目录编号', 'user', dbo, 'table', Categories, 'column', CategoryID
其中参数分别指定了扩展属性,扩展属性的值,0级对象是user,0级对象名是dbo,一级对象类型是table,一级对象名是Gategories,二级对象是column,二级对象名是GategoryID。
添加后,运行如下代码可看到添加后的结果:
select * from ::fn_listextendedproperty ('Description', 'user', 'dbo', 'table', 'Categories', 'column', 'CategoryID')
其中的参数分别指定了扩展属性,0级对象,0级对象名,1级对象,1级对象名,2级对象,2级对象名。
得到的列表如下:
objtype objname name value
COLUMN CategoryID Description 目录编号
其它的两个存储过程使用的方法类似。