為了指定擴充屬性,SQL Server 資料庫中的物件分為三種層級:0、1 和 2。層級 0 是最高層級,且定義為包含在資料庫範圍的物件。層級 1 物件包含在結構描述或使用者範圍中,層級 2 物件包含在層級 1 物件中。任何這些層級的物件都可以定義擴充屬性。
對一個層級中物件的參考,必須用擁有或包含它們的較高層級物件的名稱來限定。例如,當您將擴充屬性加入至資料表資料行 (層級 2) 時,您也必須指定包含該資料行的資料表名稱 (層級 1) 和包含該資料表的結構描述 (層級 0)。
如需物件及有效層級 0、1 和 2 類型的完整清單,請參閱<使用資料庫物件的擴充屬性>。
如果所有物件類型和名稱都是 NULL,屬性屬於目前資料庫本身。
擴充屬性不得用於系統物件、使用者自訂資料庫範圍外的物件,或未列在引數中作為有效輸入的物件。
複寫擴充屬性
只在發行者與訂閱者之間的初始同步處理中複寫擴充屬性。如果您在初始同步處理之後加入或修改擴充屬性,就不會複寫這項變更。如需有關如何複寫資料庫物件的詳細資訊,請參閱<發行資料和資料庫物件>。
結構描述與使用者
我們建議您在將擴充屬性套用至資料庫物件時不要指定 USER 當做層級 0 類型,因為這會造成名稱解析模稜兩可。例如,假設使用者 Mary 擁有兩個結構描述 (Mary 和 MySchema),而這兩個結構描述都包含一個名為 MyTable 的資料表。如果 Mary 將擴充屬性加入至 MyTable 資料表,且指定 @level0type = N'USER',@level0name = Mary,則未明確指出擴充屬性到底要套用至哪一份資料表。若要維護回溯相容性,SQL Server 必須將屬性套用至包含在名為 Mary 之結構描述中的資料表。如需有關使用者和結構描述的詳細資訊,請參閱<使用者結構描述分隔>。