Share via


XML 的目錄檢視

目錄檢視的存在是為了提供有關 XML 用法的中繼資料資訊。下節中將有部份討論。

XML 索引

XML 索引項目會出現在目錄檢視 sys.indexes 中,且具有索引 "type" 3。名稱資料行包含此 XML 索引的名稱。

XML 索引也會記錄在目錄檢視 sys.xml_indexes 中。其中包含 sys.indexes 的所有資料行,以及對 XML 索引有助益的一些特定資料行。資料行 secondary_type 中的 NULL 值是指主要 XML 索引;'P'、'R' 和 'V' 這三個值分別代表 PATH、PROPERTY 和 VALUE 次要 XML 索引。

您可以在資料表值的函數 sys.dm_db_index_physical_stats 中找到 XML 索引的空間使用情況。其提供所有索引類型的資訊,例如:所佔用的磁碟分頁數量、平均資料列大小 (位元組),以及記錄的數量。另外還包含 XML 索引。每個資料庫分割區都有此資訊。XML 索引使用相同的基底資料表分割配置及分割函數。

擷取 XML 結構描述集合

XML 結構描述集合會列舉在目錄檢視 sys.xml_schema_collections 中。XML 結構描述集合 "sys" 是由系統定義的。其包含預先定義的命名空間,您不需要明確地將其載入,即可用在所有使用者自訂的 XML 結構描述集合中。此清單包含 xml、xs、xsi、fn 及 xdt 的命名空間。另外二個目錄檢視為 sys.xml_schema_namespaces:列舉出每個 XML 結構描述集合中的所有命名空間;以及 sys.xml_components:列舉出每個 XML 結構描述中的所有 XML 結構描述元件。

內建函數 XML_SCHEMA_NAMESPACE (schemaName、XmlSchemacollectionName、namespace-uri) 會產生 xml 資料類型執行個體。此執行個體包含 XML 結構描述集合中所包含之結構描述的 XML 結構描述片段 (預先定義的 XML 結構描述除外)。

您可以用下列方法來列舉 XML 結構描述集合的內容:

  • 在 XML 結構描述集合的適當目錄檢視上撰寫 Transact-SQL 查詢。

  • 使用內建函數 XML_SCHEMA_NAMESPACE()。您可以將 xml 資料類型方法套用在此函數的輸出上。但是您不能修改基礎 XML 結構描述。

如下列範例所示。

範例:列舉 XML 結構描述集合中的 XML 命名空間

針對 XML 結構描述集合 "myCollection" 來使用下列查詢:

SELECT XSN.name
FROM    sys.xml_schema_collections XSC JOIN sys.xml_schema_namespaces XSN
    ON (XSC.xml_collection_id = XSN.xml_collection_id)
WHERE    XSC.name = 'myCollection'   

範例:列舉 XML 結構描述集合的內容

下列陳述式會列舉關聯式結構描述 dbo 中之 XML 結構描述集合 "myCollection" 的內容。

SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection')

您可以將目標命名空間指定為 XML_SCHEMA_NAMESPACE() 的第三個引數,以 xml 資料類型執行個體的型式來取得集合中的個別 XML 結構描述。如下列範例所示。

範例:從 XML 結構描述集合輸出指定的結構描述

下列陳述式會從關聯式結構描述 dbo 中的 XML 結構描述集合 "myCollection",輸出含有目標命名空間 "https://www.microsoft.com/books" 的 XML 結構描述。

SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection', 
N'https://www.microsoft.com/books')

查詢 XML 結構描述

您可以用下列方法來查詢您已載入至 XML 結構描述集合的 XML 結構描述:

  • 在 XML 結構描述命名空間的目錄檢視上撰寫 Transact-SQL 查詢。

  • 建立一個包含 xml 資料類型資料行的資料表來儲存您的 XML 結構描述,並將其載入至 XML 類型系統。您可以使用 xml 資料類型方法來查詢 XML 資料行。您也可以在此資料行上建立 XML 索引。然而,使用這個方法時,應用程式必須維護儲存在 XML 資料行中之 XML 結構描述與 XML 類型系統之間的一致性。例如,若您從 XML 類型系統中卸除 XML 結構描述命名空間,就必須也將它從資料表中卸除,以維持一致性。

請參閱

其他資源