次の方法で共有


SQL プロジェクトの XML スキーマ コレクション

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric 内の SQL データベース

SQL データベース プロジェクトでは、XSD (XML スキーマ定義) ファイルからの XML スキーマ コレクション オブジェクトの自動生成がサポートされています。 プロジェクトに XSD ファイルを適切なメタデータと共に含めると、ビルド プロセスによって CREATE XML SCHEMA COLLECTION ステートメントが作成されます。このステートメントを使用して、データベースに XML データ検証を適用できます。

XML スキーマ コレクションでは、SQL Serverで型指定された XML 列が提供されるため、データベース エンジンは定義されたスキーマに対して XML データを検証し、クエリのパフォーマンスを最適化できます。

プロジェクトで XSD ファイルを構成する

XSD ファイルから XML スキーマ コレクションを生成するには、2 つの必須メタデータ要素を含む Build 項目をプロジェクト ファイル (.sqlproj) に追加します。

  • RelationalSchema: XML スキーマ コレクションが作成されるデータベース スキーマ (たとえば、 dbo)
  • XMLSchemaCollectionName: データベース内の結果の XML スキーマ コレクション オブジェクトの名前

次の例は、SQL プロジェクトで XSD ファイルを構成する方法を示しています。

<?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 データが従う必要がある構造を定義します。 次の例では、1 つ以上の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 ファイルは、CREATE XML SCHEMA COLLECTION スキーマにOrderSchemaCollection オブジェクトを作成するdbo ステートメントを生成します。

型指定された XML 列を使用する

XML スキーマ コレクションが定義されたら、それをテーブル定義で参照して、型指定された XML 列を作成します。 型指定された XML 列は、スキーマに対してデータを検証し、クエリのパフォーマンスを向上させます。

次の例では、生成されたスキーマ コレクションを使用する型指定された XML 列を含むテーブルを作成します。

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

OrderData 列にデータを挿入すると、SQL ServerOrderSchemaCollection スキーマに対して XML が検証されます。 スキーマに準拠していない無効な XML は拒否されます。