XML アップデートグラムを使用する場合は、次の点に注意してください。
1 組の <before> および <以降> ブロックの挿入操作にアップデートグラムを使用する場合は、<fore> ブロックを省略できます。 逆に、削除操作の場合、 <以降> ブロックは省略できます。
<sync> タグ内で複数の<before>および<>ブロックを使用している場合は、<fore>ブロックと<>ブロックの両方<fore>と<after>ペアを形成するように指定する必要があります。
アップデートグラム内の更新は、XML スキーマによって提供される XML ビューに適用されます。 したがって、既定のマッピングを成功させるには、アップデートグラムでスキーマ ファイル名を指定するか、ファイル名を指定しない場合は、要素と属性の名前がデータベース内のテーブル名と列名と一致する必要があります。
SQLXML 4.0 では、アップデートグラム内のすべての列値を、その子要素の XML ビューを構成するために指定されたスキーマ (XDR または XSD) で明示的にマップする必要があります。 この動作は、以前のバージョンの SQLXML とは異なり、
sql:relationship注釈の外部キーの一部として暗黙的に指定された場合、スキーマにマップされていない列の値を許可していました。 (この変更は子要素への主キー値の伝達には影響しません。これは、子要素に値が明示的に指定されていない場合でも SQLXML 4.0 で発生します。バイナリ列 (SQL Server
imageデータ型など) のデータを変更するためにアップデートグラムを使用する場合は、SQL Server データ型 (sql:datatype="image"など) と XML データ型 (dt:type="binhex"やdt:type="binbase64など) を指定するマッピング スキーマを指定する必要があります。 バイナリ列のデータはアップデートグラムで指定する必要があります。マッピング スキーマで指定されているsql:url-encode注釈は、アップデートグラムによって無視されます。XSD スキーマを記述する場合、
sql:relationまたはsql:field注釈に指定する値にスペース文字などの特殊文字が含まれている場合 (たとえば、"Order Details" テーブル名)、この値は角かっこ ("[Order Details]" など) で囲む必要があります。アップデートグラムを使用する場合、チェーンリレーションシップはサポートされていません。 たとえば、テーブル A と C がテーブル B を使用するチェーンリレーションシップを介して関連付けられている場合、アップデートグラムを実行して実行しようとすると、次のエラーが発生します。
There is an inconsistency in the schema provided.スキーマとアップデートグラムの両方が正しく、有効な形式であっても、チェーン関係が存在する場合は、このエラーが発生します。
アップデートグラムでは、更新中に
image型データをパラメーターとして渡すことは許可されません。text/ntextやイメージなどのバイナリ ラージ オブジェクト (BLOB) の種類は、アップデートグラムを操作する際に <before> ブロックで使用しないでください。これはコンカレンシー制御で使用するために含まれるためです。 これにより、BLOB の種類の比較に制限があるため、SQL Server で問題が発生する可能性があります。 たとえば、LIKE キーワードは、textデータ型の列間で比較するために WHERE 句で使用されます。ただし、データのサイズが 8K を超える BLOB 型の場合、比較は失敗します。データの特殊文字は、BLOB の種類の比較に制限があるため、SQLXML 4.0 で問題が発生する可能性があります。 たとえば、
ntext型の列のコンカレンシー チェックで使用した場合、アップデートグラムの <before> ブロックで "[Serializable]" を使用すると、次の SQLOLEDB エラーの説明で失敗します。Empty update, no updatable rows found Transaction aborted