次の方法で共有


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

適用対象: SQL Server Azure 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 クエリはサポートされていません。

  • サポートされていない注釈 (sql:relationshipsql:key-fields など) で xml データ型列を使用すると、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)