Exibição de uma coleção de esquemas XML armazenados

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Depois de você importar uma coleção de esquema XML usando CREATE XML SCHEMA COLLECTION, os componentes do esquema são armazenados nos metadados. É possível usar a função intrínseca xml_schema_namespacepara reconstruir a coleção de esquemas XML. Essa função retorna uma instância de tipo de dados xml .

Por exemplo, a consulta a seguir recupera uma coleção de esquema XML (ProductDescriptionSchemaCollection) do esquema relacional de produção no banco de dados AdventureWorks2022 .

SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection');
GO

Se desejar ver apenas um esquema da coleção de esquemas XML, será possível especificar XQuery em relação ao resultado do tipo xml que é retornado pelo xml_schema_namespace.

SELECT xml_schema_namespace(N'RelationalSchemaName',N'XmlSchemaCollectionName').query('
/xs:schema[@targetNamespace="TargetNameSpace"]
');
GO

Por exemplo, a consulta a seguir recupera informações do esquema XML sobre garantia e manutenção do produto da coleção de esquema XML ProductDescriptionSchemaCollection .

SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection').query('
/xs:schema[@targetNamespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain"]
');
GO

Também é possível passar o namespace opcional de destino como o terceiro parâmetro para a função xml_schema_namespace para recuperar esquema específico da coleção, conforme mostrado na consulta a seguir:

SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection', N'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain');
GO

Quando você cria uma coleção de esquema XML usando CREATE XML SCHEMA COLLECTION no banco de dados, a instrução armazena os componentes do esquema nos metadados. Somente os componentes do esquema que o SQL Server reconhece são armazenados. Os comentários, as anotações ou os atributos que não são XSD não são armazenados. Portanto o esquema reconstruído pelo xml_schema_namespace é funcionalmente equivalente ao esquema original, mas não necessariamente terá a mesma aparência. Por exemplo, você não verá os mesmos prefixos que existiam no esquema original. O esquema retornado pelo xml_schema_namespace usa t como o prefixo do namespace de destino e ns1, ns2e assim por diante, para outros namespaces.

Para manter uma cópia idêntica dos esquemas XML, é necessário salvar o esquema XML em um arquivo ou em uma tabela do banco de dados em uma coluna de tipo xml .

A exibição de catálogo sys.xml_schema_collections também retorna informações sobre coleções de esquemas XML. Essas informações incluem o nome da coleção, a data de criação e o proprietário da coleção.

Confira também