Microsoft® SQL Server™ 2000 引進一些擴充屬性,使用者可為資料庫中的各種不同物件定義。這些擴充屬性可用來儲存有關資料庫物件的應用程式特有或網路特有的資訊。因為屬性儲存在資料庫中,使讀取屬性的所有資料庫能夠以同樣的方式驗算物件。這有助於強制系統中所有程式如何對待資料的一致性。每個擴充屬性都擁有使用者自訂名稱與數值。擴充屬性的值是一個最多可包含 7.500 個位元組資料的 sql_variant 值。個別資料庫物件可以擁有多個擴充屬性。擴充屬性有以下幾種可能的用法: 指定資料表、檢視表或資料行的標題。所有的應用程式都可以在顯示資料表、檢視表或資料行資訊的使用者介面中使用相同的標題。
指定資料行的輸入遮罩,讓所有的應用程式在執行 Transact-SQL 陳述式之前可以先驗證資料。
指定在資料行中顯示資料的格式化規則。
記錄應用程式可向使用者顯示的特定資料庫物件之描述。
指定應顯示的資料行的大小及視窗位置。 
為了指定擴充屬性,SQL Server 2000 資料庫中的物件可分為三個層級 (0、1、2)。0 為最高層級,2 為最低層級。下表列出層級 0 的物件,包括使用者及使用者自訂的資料型別,以及有效的層級 -1 與層級 -2 物件。 層級 0 層級 1 層級 2 
User 資料表 資料行、索引、條件約束、觸發程序 
 檢視表 資料行、INSTEAD OF 觸發程序 
 結構描述繫結檢視表 資料行、索引、INSTEAD OF 觸發程序 
 預存程序 參數 
 規則 <無> 
 預設值 <無> 
 函數 資料行、參數、條件約束 
 結構描述繫結函數 資料行、參數、條件約束 
使用者自訂資料型別 <無> <無> 
未列在層級 0、1 或 2 的物件,均未獲得擴充屬性支援。一個層級中的物件之參考,必須具有擁有或包含它們的更高層級物件的完整名稱。例如,若參考某資料行 (層級 2),您必須一併指定包含擁有資料表的資料行及使用者 (層級 0) 之資料表。擴充屬性只會提供一個儲存資料的具名位置。所有的應用程式都必須設定為能查詢屬性及採取適當的措施。例如,為資料行加入標題屬性,並不會建立一個應用程式可顯示的標題。每個應用程式都必須設定為能夠讀取標題及正確顯示標題。擴充屬性的管理是透過三個系統預存程序: sp_addextendedproperty 
將新的擴充屬性加到資料庫物件。sp_updateextendedproperty 
更新現有擴充屬性的值。sp_dropextendedproperty 
卸除現有的擴充屬性。FN_LISTEXTENDEDPROPERTY 系統函數可用來擷取現有擴充屬性的值。以下列舉資料表可具有的屬性: 資料表及資料行的標題擴充屬性。
資料行的輸入遮罩擴充屬性。 
USE Northwind
GO
CREATE TABLE TestExProp
  (PriKey      int PRIMARY KEY IDENTITY(1,1),
   USPhoneNmbr      char(13)
        CHECK (USPhoneNmbr LIKE
               '([0-9][0-9][0-9])[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'
               ),
   USSocialScrty   char(11)
        CHECK (USSocialScrty LIKE
               '[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]'
               )
  )
GO
sp_addextendedproperty 'Caption', 'Caption Test Table',
                       'user', dbo, 'table', TestExProp
GO
sp_addextendedproperty 'Caption', 'Primary Key',
                       'user', dbo, 'table', TestExProp, 'column', PriKey
GO
sp_addextendedproperty 'Input Mask', '(NNN)NNN-NNNN',
                       'user', dbo, 'table', TestExProp, 'column', USPhoneNmbr
GO
sp_addextendedproperty 'Caption', 'US Phone Number',
                       'user', dbo, 'table', TestExProp, 'column', USPhoneNmbr
GO
sp_addextendedproperty 'Input Mask', 'NNN-NN-NNNN',
                       'user', dbo, 'table', TestExProp, 'column', USSocialScrty
GO
sp_addextendedproperty 'Caption', 'US Social Security Number',
                       'user', dbo, 'table', TestExProp, 'column', USSocialScrty
GO下列陳述式會更新主索引鍵標題屬性:sp_updateextendedproperty 'Caption', 'Primary Key - Integer',
                       'user', dbo, 'table', TestExProp, 'column', PriKey下列陳述式會卸除輸入遮罩屬性:sp_dropextendedproperty 'Input Mask',
                       'user', dbo, 'table', TestExProp,
                       'column', USSocialScrty
GO
sp_dropextendedproperty 'Input Mask',
                       'user', dbo, 'table', TestExProp,
                       'column', USPhoneNmbr
GO下列陳述式會擷取資料表標題屬性:SELECT *
FROM ::FN_LISTEXTENDEDPROPERTY('Caption', 'User','dbo','table',
                               'TestExProp', default, default)此範例顯示使用 CHECK 條件約束及輸入遮罩屬性,來指定每個資料行的資料模式。大部份的站台都會選擇其中一個,除非: CHECK 條件約束被視為暫時的方法,直到處理這個資料表的所有程式可以變更為使用輸入遮罩屬性為止。
站台亦支援使用者透過不需讀取擴充屬性的臨時性工具來更新資料。 
輸入遮罩勝過 CHECK 條件約束的地方是,邏輯會應用到應用程式,因此如果使用者提供格式錯誤的資料,將會產生更多資訊性的錯誤。輸入遮罩的缺點是需要個別呼叫 fn_listextendedproperty以取得屬性,而且必須在所有的程式中加入強制遮罩的邏輯。

解决方案 »

  1.   

    具体方法如下:
    1、可以在QA(查询分析器)里面通过右击相应列选择扩展属性,进行添加
    2、SQL语句如下:
    EXEC sp_addextendedproperty 'ID', '学号', 'user', dbo, 'table', 'clientInfo', 'column',CRid
    go
    EXEC sp_addextendedproperty 'NAME', '姓名', 'user', dbo, 'table', 'clientInfo', 'column',Rname
    go
    select name,value from ::fn_listextendedproperty
    (default,'user','dbo','table','clientInfo','column',default)
    go
    name value
    ---------------------------------------------
    ID       学号
    NAME 姓名
    这样就可以当作结果集用了,具体请参照帮助。
      

  2.   

    谢谢上面两位,上面说的mssql帮助和msdn中已有,我也很明白我的目的,主要想知道,扩展属性都有哪些,对应的变量名(也就是在QA(查询分析器)里面通过在任意表上右击选择扩展属性,进行添加时  名称列  的值)是什么?