Поделиться через


Просмотр хранимой коллекции схем XML

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

После импорта коллекции XML-схем с помощью команды Создать коллекцию схем XMLкомпоненты схемы будут храниться в метаданных. Для восстановления коллекции схем XML можно использовать встроенную функцию xml_schema_namespace . Эта функция возвращает экземпляр типа данных xml .

Например, следующий запрос извлекает коллекцию XML-схем (ProductDescriptionSchemaCollection) в реляционной схеме продукции в базе данных AdventureWorks2022 .

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

Если нужно увидеть только одну схему из коллекции, можно задать запрос XQuery для результата типа xml , возвращаемого функцией xml_schema_namespace.

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

Например, следующий запрос находит сведения об XML-схеме поддержки и гарантий на продукт в коллекции 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

Также можно передать в качестве необязательного третьего параметра для xml_schema_namespace целевое пространство имен, чтобы получить из коллекции конкретную схему, как показано в следующем запросе:

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

Когда в базе данных создается коллекция XML-схем с помощью инструкции CREATE XML SCHEMA COLLECTION, она сохраняет компоненты схемы в метаданных. Хранятся только компоненты схемы, которые понимает SQL Server. Любые комментарии, заметки или атрибуты, отличные от XSD, не хранятся. Следовательно, схема, повторно сконструированная посредством функции xml_schema_namespace , функционально эквивалентна первоначальной схеме, но не обязательно будет выглядеть так же. Например, вы не увидите одинаковые префиксы, которые были в исходной схеме. Схема, возвращаемая функцией xml_schema_namespace , использует префикс t для целевого пространства имен и префиксы ns1, ns2и так далее для всех остальных.

Если нужно сохранить точную копию XML-схем, следует сохранить схему в файл или в таблицу базы данных в столбец типа xml .

Представление каталога sys.xml_schema_collections также возвращает сведения о коллекциях XML-схем. Сюда входят, например сведения об имени коллекции, дате создания и владельце коллекции.

См. также