SQLXML 4.0 での xml データ型のサポート

適用対象:SQL ServerAzure SQL Database

SQL Server 2005 (9.x) 以降では、SQL Serverは xml データ型を使用して XML 型のデータをサポートしています。 このトピックでは、SQLXML 4.0 が xml データ型のインスタンスを認識し、それらのサポートを実装する方法について説明します。

xml データ型の使用

xml データ型の列を実装する SQL テーブルの使用方法の詳細を理解するために、次の例を示します。

タスク トピック
XML ビューに xml 列をマップして含める方法 "XML 要素を XML データ型の列にマップする" テーブルおよび列への XSD 要素と属性の既定のマッピング (SQLXML 4.0)
アップデートグラムを使用して xml 列にデータを挿入する方法 "XML データ型列にデータを挿入する" XML アップデートグラムを使用したデータの挿入 (SQLXML 4.0)
XML 列への XML データの一括読み込み "xml データ型の列に一括読み込みを行う" XML 一括読み込みの例 (SQLXML 4.0)

ガイドラインと制限

  • <xsd:any> は、 xml データ型を含む列にマップできません。 このシナリオの SQLXML でのサポートは、 sql:overflow-field 注釈を使用して提供されます。 もう 1 つの回避策は、 xml データ型フィールドを xsd:anyType の要素としてマップすることです。 この方法は、上の表の例 "XML 要素を XML データ型の列にマップする" に示されています。

  • xml データ型列の内容に対する XPath クエリはサポートされていません。

  • xml データ型列を、サポートされていない注釈 (sql:relationshipsql:key-fields など) または許可されている注釈で使用すると、SQLXML 4.0 を実装する中間層コンポーネントによってトラップされないSQL Serverエラーが発生します。 これは、SQLXML で SQL 型の情報が必要とされないためです。 この動作は、BLOB やバイナリ型などその他のデータ型に対する SQLXML の動作と同様です。

  • XML 列のマッピングは、XSD スキーマでのみサポートされます。 XDR スキーマでは、 xml 列のマッピングはサポートされていません。

  • SQLXML 4.0 は、SQL Serverで提供される XML 解析サポートに依存しています。 xml 列は、型指定された XML または型指定されていない XML としてマップできます。 どちらの場合も、SQLXML 4.0 で入力 XML は検証されません。 入力 XML が無効または整形式の場合、SQL Serverは SQLXML に報告し、サーバーから返された関連するエラー情報をユーザーに伝達します。

  • SQLXML 4.0 は、SQL Serverで提供される DTD の限定的なサポートに依存しています。 SQL Serverでは、xml データ型データの内部 DTD を使用できます。これは、既定値を指定したり、エンティティ参照を展開された内容に置き換えたりするために使用できます。 SQLXML では、サーバーに XML データが "そのまま" (内部 DTD を含めて) 渡されます。 ここで、サード パーティのツールを使用して DTD を XML スキーマ (XSD) ドキュメントに変換し、データをインライン XSD スキーマと共にデータベースに読み込むことができます。

  • SQLXML 4.0 では、SQL Serverの動作に基づいて XML 宣言処理命令 (例: ) は保持されません。 代わりに、XML 宣言は、SQL Server XML パーサーへのディレクティブとして扱われ、データが xml データ型に変換された後、その属性 (バージョン、エンコード、スタンドアロン) が失われます。 XML データは内部的に UCS-2 として保存されます。 XML インスタンス内の他のすべての処理命令は保持されます。これらは xml 列で使用でき、SQLXML でサポートできます。

参照

XML データ (SQL Server)