Exibições do catálogo para XML

Exibições do catálogo existem para fornecer informações de metadados sobre o uso do XML. Algumas dessas exibições são discutidas na seção a seguir.

Índices XML

As entradas de índice XML são exibidas na exibição do catálogo, sys.indexes, com o índice "tipo" 3. A coluna de nome contém o nome do índice XML.

Também são registrados índices de XML na exibição do catálogo, sys.xml_indexes. Essa exibição contém todas as colunas de sys.indexes e algumas específicas que são úteis para índices XML. O valor NULL na coluna secondary_type indica um índice XML primário, os valores 'P', 'R' e 'V' representam os índices XML secundários PATH, PROPERTY e VALUE, respectivamente.

O uso espacial de índices XML pode ser localizado na função com valor de tabela sys.dm_db_index_physical_stats. Ela fornece informações, como o número de páginas ocupadas no disco, tamanho médio das linhas em bytes e o número de registros para todos os tipos de índices. Isso também inclui índices XML. Essas informações estão disponíveis para cada partição do banco de dados. Índices XML usam o mesmo esquema e função de particionamento da tabela base.

Recuperando coleções de esquema XML

Coleções de esquema XML são enumeradas na exibição do catálogo sys.xml_schema_collections. A coleção de esquema XML "sys" está definida pelo sistema. Ela contém os namespaces predefinidos que podem ser usados em todas as coleções de esquema XML definidas pelo usuário sem precisar carregá-las explicitamente. Essa lista contém os namespaces para xml, xs, xsi, fn e xdt. Duas outras exibições do catálogo são sys.xml_schema_namespaces, que enumera todos os namespaces dentro de cada coleção de esquema XML, e sys.xml_components, que enumera todos os componentes do esquema XML dentro de cada esquema XML.

O função interna XML_SCHEMA_NAMESPACE, schemaName, XmlSchemacollectionName, uri de namespace, produz uma instância de tipo de dados xml. Essa instância contém fragmentos de esquema XML estão contidos em uma coleção de esquema XML, exceto os esquemas XML predefinidos.

É possível enumerar o conteúdo de uma coleção de esquema XML das seguintes maneiras:

  • Escreva consultas Transact-SQL nas exibições do catálogo apropriadas para coleções de esquema XML.

  • Use o função interna XML_SCHEMA_NAMESPACE(). É possível aplicar métodos de tipo de dados xml na saída dessa função. No entanto não é possível modificar os esquemas XML subjacentes.

Esses são ilustrados nos exemplos a seguir.

Exemplo: Enumere os namespaces XML em uma coleção de esquema XML

Use a consulta a seguir para a coleção de esquema 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'   

Exemplo: Enumere o conteúdo de uma coleção de esquema XML

A instrução a seguir enumera o conteúdo da coleção de esquema XML "myCollection" dentro do esquema relacional dbo.

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

Esquemas XML individuais dentro da coleção podem ser obtidos como instâncias de tipo de dados xml especificando o namespace de destino como o terceiro argumento para XML_SCHEMA_NAMESPACE(). Isso é mostrado no exemplo a seguir.

Exemplo: Produza um esquema especificado de uma coleção de esquema XML

A instrução a seguir produz o esquema XML com o namespace de destino "https://www.microsoft.com/books" da coleção de esquema XML "myCollection" dentro do esquema relacional dbo.

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

Consultando esquemas XML

É possível consultar esquemas XML carregados em coleções de esquema XML das seguintes maneiras:

  • Escreva consultas Transact-SQL em exibições do catálogo para namespaces de esquema XML.

  • Crie uma tabela que contenha uma coluna de tipo de dados xml para armazenar seus esquemas XML e também para carregá-las no sistema de tipo XML. É possível consultar a coluna XML usando os métodos de tipo de dados xml. Além disso, é possível construir um índice XML nessa coluna. No entanto, com essa abordagem, o aplicativo deve manter consistência entre os esquemas XML armazenados na coluna XML e no sistema de tipo XML. Por exemplo, se você descartar o namespace do esquema XML do sistema de tipo XML, também deverá descartá-lo da tabela para preservar a consistência.

Consulte também

Outros recursos