天天看點

SQLServer在資料庫對象上使用擴充屬性

SQL Server 2000 引入了擴充屬性,使用者可在各種資料庫對象上定義這些屬性。這些擴充屬性可用于存儲與資料庫對象有關的應用程式或站點特有的資訊。因為屬性存儲在資料庫中,所有讀取屬性的應用程式都能以相同的方式評估對象。這有助于在系統中的所有程式對資料的處理方式上強制一緻性。

        每個擴充屬性都有使用者定義的名稱和值。擴充屬性值為最多可包含 7,500 位元組資料的 <b>sql_variant</b> 值。

        擴充屬性的可能用途包括:

指定表、視圖或列的标題。這樣,所有應用程式都可在顯示表、視圖或列資訊的使用者界面中使用該标題。

指定列的輸入掩碼,以便所有應用程式都可在執行 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       目錄編号

其它的兩個存儲過程使用的方法類似。