Partilhar via


Exibir uma coleção de esquema XML armazenada

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

Depois de importar uma coleção de esquema XML usando CREATE XML SCHEMA COLLECTION, os componentes do esquema são armazenados nos metadados. Você pode usar a função intrínseca xml_schema_namespace para reconstruir a coleção de esquema 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 quiser ver apenas um esquema da coleção de esquemas XML, pode especificar uma consulta XQuery ao resultado do tipo xml retornado por 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 de esquema XML de 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

Você também pode passar o namespace de destino opcional 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 de esquema que o SQL Server entende são armazenados. Quaisquer comentários, anotações ou atributos não-XSD não são armazenados. Portanto, o esquema reconstruído por 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 tinha no esquema original. O esquema retornado por xml_schema_namespace usa t como o prefixo para o namespace de destino e ns1, ns2e assim por diante, para outros namespaces.

Se quiser manter uma cópia idêntica dos esquemas XML, salve o esquema XML em um arquivo ou em uma tabela de banco de dados em uma coluna de tipo de xml.

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

Ver também