スケーラブルなソリューションを考え出すのに苦労しています。SQL Server 2008 で複雑な XML 要素を追加するにはどうすればよいですか?
たとえば、次の単純なテーブルがあります。
CREATE TABLE my_audit (
[id] [int] IDENTITY(1,1) NOT NULL,
[xml_file] [xml] NULL,
);
次の XML ファイルを挿入するとします。
<Input>
<Element1 />
</Input>
次の SQL ステートメントを実行して、2 番目の要素を追加できます。
UPDATE my_audit
SET xml_file.modify('insert element Element2 {""} as last into (/Input)[1]')
WHERE id = 1;
これは機能し、結果は次のようになります。
<Input>
<Element1 />
<Element2 />
</Input>
残念ながら、これはより複雑な要素タイプではスケーラブルではありません。次の XML を追加することを検討してください。
<Input>
<Element3>
<subElement1></subElement1>
</Element3>
</Input>
今、私は何をしますか?
これらの種類の呼び出しは、ADO を使用してデータベースに接続する .net アプリケーションによって行われています (これは変更できません)。独自のマッピング ライブラリを作成すると、すぐに制御不能になる可能性があります。それはスケーラブルなソリューションではありません。
VARCHAR 変数 "<Element3><subElement1></subElement1></Element3>" を渡して追加できる TSQL コマンドはありますか? たぶん、他のより良い方法はありますか?