サーバー上の XML スキーマ コレクションの要件と制限

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

XSD (XML Schema Definition Language) の検証には、 xml データ型を使用する SQL 列に関して制限事項がいくつかあります。 次の表は、このような制限事項に関する詳細と、SQL Server で機能するように XSD スキーマを変更するためのガイドラインを示しています。 このセクションの記事では、具体的な制限事項の詳細とその対処方法について説明します。

項目 制限事項
minOccursmaxOccurs minOccurs 属性と maxOccurs 属性の値は、4 バイトの整数に収める必要があります。 これに準拠しないスキーマはサーバーで拒否されます。
<xsd:choice> SQL Server では、minOccurs 属性値に 0 を指定してパーティクルを定義していない限り、子のない <xsd:choice> パーティクルを持つスキーマは拒否されます。
<xsd:include> 現在、SQL Server ではこの要素をサポートしていません。 この要素を含む XML スキーマはサーバーによって拒否されます。

解決方法として、<xsd:include> ディレクティブを含む XML スキーマに前処理を行い、インクルードされるすべてのスキーマの内容をコピーおよびマージして 1 つのスキーマにすることで、サーバーにアップロードできます。 詳細については、「 含まれているスキーマをマージするためのスキーマの前処理」を参照してください。
<xsd:key><xsd:keyref>、および <xsd:unique> 現在、SQL Server では、一意性の強制や、キーおよびキー参照の確立を行うための、これらの XSD ベースの制約はサポートしていません。 これらの要素を含む XML スキーマは登録できません。
<xsd:redefine> SQL Server ではこの要素をサポートしていません。 スキーマを更新するための別の方法については、「<xsd:redefine > 要素」を参照してください。
<xsd:simpleType> SQL Server では、xs:time および xs:dateTime 以外の秒部分を含む単純型はミリ秒単位の精度までしかサポートされず、xs:time および xs:dateTime は 100 ナノ秒単位の精度までサポートされます。 SQL Server は、認識されるすべての XSD 単純型の列挙に制限を適用します。

SQL Server では、<xsd:simpleType>> 宣言での "NaN" 値の使用はサポートされていません。

詳細については、「<xsd:simpleType> 宣言の値」を参照してください。
xsi:schemaLocationxsi:noNamespaceSchemaLocation SQL Server では xml データ型の列や変数に挿入された XML インスタンス データにこれらの属性が含まれている場合、これらの属性を無視します。
xs:QName SQL Server では、XML スキーマ制約要素を使用している xs:QName から派生した型はサポートされていません。

SQL Server では、メンバー要素に xs:QName を指定した共用体型はサポートされていません。

詳細については、「 The xs:QName Type」を参照してください。
既存の置換グループへのメンバーの追加 XML スキーマ コレクション内の既存の置換グループにメンバーを追加することはできません。 XML スキーマの置換グループは先頭要素のみで使用するように制限されているので、同じ CREATE XML SCHEMA COLLECTION ステートメントまたは ALTER XML SCHEMA COLLECTION ステートメントで置換グループのすべてのメンバー要素を定義する必要があります。
正規の形式とパターン制限 値の正規表現は、その値の型のパターン制限に従う必要があります。 詳細については、「 Canonical Forms and Pattern Restrictions」を参照してください。
列挙ファセット SQL Server では、ファセットに違反するパターン ファセットや列挙を含む型を使用した XML スキーマはサポートされていません。
ファセット長 lengthファセット、 minLengthファセット、および maxLength ファセットは long 型で格納されます。 この型は 32 ビット型です。 したがって、これらの値の許容範囲は 2^31 です。
ID 属性 XML スキーマ コンポーネントは、それぞれ ID 属性を 1 つ含むことができます。 SQL Server では、ID 型の <xsd:attribute> 宣言に一意性を適用しますが、これらの値を格納しません。 一意性の適用範囲は、CREATE XML SCHEMA COLLECTION ステートメントまたは ALTER XML SCHEMA COLLECTION ステートメントで適用します。
ID 型 SQL Server では、 xs:ID 型、xs:IDREF 型、または xs:IDREFS 型の要素はサポートされていません。 スキーマでは、この型の要素や、この型の制限または拡張によって派生した要素を宣言できません。
ローカル名前空間 <xsd:any> 要素では、ローカル名前空間を明示的に指定する必要があります。 SQL Server では、名前空間属性の値に空文字列 ("") を使用するスキーマは拒否されます。 代わりに、SQL Server では "##local" を明示的に使用して、修飾されない要素や属性をワイルドカード文字によるインスタンスとして示す必要があります。
混合型と単純コンテンツ SQL Server では、混合型を単純コンテンツに制限することはできません。 詳細については、「 Mixed Type and Simple Content」を参照してください。
NOTATION 型 SQL Server は NOTATION 型をサポートしていません。
メモリ不足状態 大きな XML スキーマ コレクションの操作では、メモリが不足することがあります。 この問題の解決方法については、「 大きな XML スキーマ コレクションとメモリ不足状態」を参照してください。
繰り返される値 SQL Server では、block 属性または final 属性で "restriction restriction" や "extension extension" のように値を繰り返すスキーマが拒否されます。
スキーマ コンポーネントの識別子 SQL Server は、スキーマ コンポーネントの識別子の最大長を Unicode 文字 1,000 文字に制限します。 また、識別子に補助文字のペアを使用することはできません。
タイムゾーン情報 SQL Server 2008 (10.0.x) 以降のバージョンでは、xs:datexs:time、および xs:dateTime の値について、XML スキーマ検証でタイム ゾーンの情報が完全にサポートされています。 SQL Server 2005 (9.x) 下位互換性のあるモードでは、タイム ゾーン情報は常に協定世界時 (グリニッジ標準時) を基準として正規化されます。 dateTime 型の要素の場合は、サーバー側でオフセット値 ("-05:00") を使用して対応する GMT 時を返すことによって、指定された時間を GMT に変換します。
共用体型 SQL Server は、共用体型からの制限はサポートしません。
可変精度の 10 進数 SQL Server は、有効桁数が可変の 10 進数はサポートしません。 xs:decimal 型は任意の有効桁数の 10 進数を表します。 XML プロセッサに準拠するには、最低でも totalDigits=18以上の 10 進数をサポートする必要があります。 SQL Server は、totalDigits=38, をサポートしますが、小数部は 10 桁に制限されます。 インスタンス化されたすべての xs:decimal 値は、サーバーでは SQL 型数値 (38, 10) を使用して内部的に表現されます。

次のステップ

関連項目