Freigeben über


XML-Schemasammlungen in SQL-Projekten

Gilt für:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-Datenbank in Microsoft Fabric

SQL-Datenbankprojekte unterstützen die automatische Generierung von XML-Schemaauflistungsobjekten aus XSD-Dateien (XML-Schemadefinition). Wenn Sie eine XSD-Datei in Ihr Projekt mit den entsprechenden Metadaten einschließen, erstellt der Buildprozess eine CREATE XML SCHEMA COLLECTION Anweisung, mit der Sie die XML-Datenüberprüfung in Ihrer Datenbank erzwingen können.

XML-Schemasammlungen stellen typierte XML-Spalten in SQL Server bereit, sodass das Datenbankmodul XML-Daten anhand definierter Schemas überprüft und die Abfrageleistung optimiert.

Konfigurieren von XSD-Dateien im Projekt

Um eine XML-Schemaauflistung aus einer XSD-Datei zu generieren, fügen Sie ihrer Projektdatei (Build) ein .sqlproj Element mit zwei erforderlichen Metadatenelementen hinzu:

  • RelationalSchema: Das Datenbankschema, in dem die XML-Schemaauflistung erstellt wird (z. B dbo. )
  • XMLSchemaCollectionName: Der Name des resultierenden XML-Schemasammlungsobjekts in der Datenbank

Das folgende Beispiel zeigt, wie Sie eine XSD-Datei in einem SQL-Projekt konfigurieren:

<?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-Datei (Beispiel)

Die XSD-Datei definiert die Struktur, der XML-Daten folgen müssen. Im folgenden Beispiel wird ein Schema für ein Order Element definiert, das mindestens ein Item Element enthält:

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

Wenn das Projekt erstellt wird, generiert diese XSD-Datei eine CREATE XML SCHEMA COLLECTION Anweisung, die das OrderSchemaCollection Objekt im dbo Schema erstellt.

Verwenden von typierten XML-Spalten

Nachdem die XML-Schemaauflistung definiert wurde, verweisen Sie in Tabellendefinitionen darauf, um typierte XML-Spalten zu erstellen. Typierte XML-Spalten überprüfen Daten anhand des Schemas und verbessern die Abfrageleistung.

Im folgenden Beispiel wird eine Tabelle mit einer typierten XML-Spalte erstellt, die die generierte Schemaauflistung verwendet:

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

Wenn Sie Daten in die Spalte OrderData einfügen, überprüft SQL Server den XML-Code anhand des Schemas OrderSchemaCollection. Ungültiger XML-Code, der nicht dem Schema entspricht, wird abgelehnt.