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


Коллекции схем XML в проектах SQL

Применимо к:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL в базе данных Microsoft Fabric

Проекты базы данных SQL поддерживают автоматическое создание объектов коллекции схем XML из файлов XSD (определение схемы XML). При включении XSD-файла в проект с соответствующими метаданными процесс сборки создает CREATE XML SCHEMA COLLECTION инструкцию, которую можно использовать для принудительной проверки XML-данных в базе данных.

Коллекции схем XML предоставляют типизированные XML-столбцы в SQL Server, что позволяет ядру СУБД проверять XML-данные на основе определенных схем и оптимизировать производительность запросов.

Настройка XSD-файлов в проекте

Чтобы создать коллекцию XML-схем из XSD-файла, добавьте Build элемент в файл проекта (.sqlproj) с двумя обязательными элементами метаданных:

  • RelationalSchema: схема базы данных, в которой создается коллекция схем XML (например, dbo)
  • XMLSchemaCollectionName: имя результирующего объекта коллекции схем XML в базе данных

В следующем примере показано, как настроить XSD-файл в проекте SQL:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
  <Sdk Name="Microsoft.Build.Sql" Version="2.1.0" />
  <PropertyGroup>
    <Name>MyDatabase</Name>
    <DSP>Microsoft.Data.Tools.Schema.Sql.Sql170DatabaseSchemaProvider</DSP>
    <ModelCollation>1033, CI</ModelCollation>
  </PropertyGroup>
  <ItemGroup>
    <Build Include="OrderSchema.xsd">
      <RelationalSchema>dbo</RelationalSchema>
      <XMLSchemaCollectionName>OrderSchemaCollection</XMLSchemaCollectionName>
    </Build>
  </ItemGroup>
</Project>

Пример XSD-файла

XSD-файл определяет структуру, которую должны следовать XML-данные. В следующем примере определяется схема для Order элемента, содержащего один или несколько Item элементов:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Order">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Item" type="xs:string" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

При сборке проекта этот XSD-файл генерирует инструкцию, которая создает объект OrderSchemaCollection в схеме dbo.

Использование типизированных XML-столбцов

После определения коллекции схем XML сослаться на нее в определениях таблиц, чтобы создать типизированные XML-столбцы. Типизированные XML-столбцы проверяют данные в схеме и повышают производительность запросов.

В следующем примере создается таблица с типизированным XML-столбцом, использующим созданную коллекцию схем:

CREATE TABLE dbo.Orders (
    Id INT PRIMARY KEY,
    OrderData XML(dbo.OrderSchemaCollection)
);

При вставке данных в столбец OrderData SQL Server проверяет XML на соответствие схеме OrderSchemaCollection. Недопустимый XML, который не соответствует схеме, отклоняется.