Dela via


XML-schemasamlingar i SQL-projekt

Applies to:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

SQL-databasprojekt stöder automatisk generering av XML-schemasamlingsobjekt från XSD-filer (XML-schemadefinition). När du inkluderar en XSD-fil i projektet med lämpliga metadata skapar byggprocessen en CREATE XML SCHEMA COLLECTION instruktion som du kan använda för att framtvinga XML-dataverifiering i databasen.

XML-schemasamlingar tillhandahåller inskrivna XML-kolumner i SQL Server, vilket gör att databasmotorn kan verifiera XML-data mot definierade scheman och optimera frågeprestanda.

Konfigurera XSD-filer i projektet

Om du vill generera en XML-schemasamling från en XSD-fil lägger du till ett Build objekt i projektfilen (.sqlproj) med två nödvändiga metadataelement:

  • RelationalSchema: Databasschemat där XML-schemasamlingen skapas (till exempel dbo)
  • XMLSchemaCollectionName: Namnet på det resulterande XML-schemasamlingsobjektet i databasen

I följande exempel visas hur du konfigurerar en XSD-fil i ett SQL-projekt:

<?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>

Exempel på XSD-fil

XSD-filen definierar strukturen som XML-data måste följa. I följande exempel definieras ett schema för ett Order element som innehåller ett eller flera Item element:

<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>

När projektet byggs genererar den här XSD-filen en CREATE XML SCHEMA COLLECTION instruktion som skapar OrderSchemaCollection objektet i dbo schemat.

Använda inskrivna XML-kolumner

När XML-schemasamlingen har definierats refererar du till den i tabelldefinitioner för att skapa inskrivna XML-kolumner. Inskrivna XML-kolumner validerar data mot schemat och förbättrar frågeprestanda.

I följande exempel skapas en tabell med en skriven XML-kolumn som använder den genererade schemasamlingen:

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

När du infogar data i kolumnen OrderData verifierar SQL Server XML mot schemat OrderSchemaCollection. Ogiltig XML som inte överensstämmer med schemat avvisas.