Compartilhar via


Exibir uma coleção de esquemas XML armazenados

Depois de você 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çãointrínseca xml_schema_namespace para reconstruir a coleção de esquemas XML. Essa função retorna uma xml instância de tipo de dados.

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

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

Se você quiser ver apenas um esquema da coleção de esquemas XML, você pode especificar uma consulta XQuery para o resultado do tipo xml que é 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 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. Observe que 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 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 tinha 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.

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

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.

Consulte Também

Coleções de esquema XML (SQL Server)