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

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

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

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

解決方法として、<xsd:include> ディレクティブを含む XML スキーマに前処理を行い、インクルードされるすべてのスキーマの内容をコピーおよびマージして 1 つのスキーマにすることで、サーバーにアップロードできます。 詳細については、「 含まれているスキーマをマージするためのスキーマの前処理」を参照してください。
<xsd:key><xsd:keyref>、および <xsd:unique> 現在、SQL Server では、一意性の強制や、キーおよびキー参照の確立を行うための、これらの XSD ベースの制約はサポートしていません。 これらの要素を含む XML スキーマは登録できません。
<xsd:redefifine(再定義)> 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 | ALTER} XML SCHEMA COLLECTION ステートメント内で定義しなければならないという制約があります。
正規の形式とパターン制限 値の正規表現は、その値の型のパターン制限に従う必要があります。 詳細については、「正準形式とパターンの制限」を参照してください。
列挙ファセット SQL Server では、ファセットに違反するパターン ファセットや列挙を含む型を使用した XML スキーマはサポートされていません。
ファセットの長さ lengthファセット、 minLengthファセット、および maxLength ファセットは long 型で格納されます。 この型は 32 ビット型です。 したがって、これらの値の許容範囲は 2^31 です。
ID 属性 XML スキーマ コンポーネントは、それぞれ ID 属性を 1 つ含むことができます。 SQL Server では、< 型の >xsd:attribute 宣言に対して一意性を強制しますが、これらの値は格納しません。 一意性を適用するスコープは{CREATE |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 は、union 型の制約には対応していません。
可変精度の 10 進数 SQL Server は、有効桁数が可変の 10 進数はサポートしません。 xs:decimal 型は任意の有効桁数の 10 進数を表します。 XML プロセッサに準拠するには、最低でも totalDigits=18以上の 10 進数をサポートする必要があります。 SQL Server は、totalDigits=38, をサポートしますが、小数部は 10 桁に制限されます。 インスタンス化されたすべての xs:decimal 値は、サーバーでは SQL 型数値 (38, 10) を使用して内部的に表現されます。