次のような xml ドキュメントがあるとします。
<parentRecords>
<parentRecord field1="foo" field2="bar">
<childRecord field1="test" field2="text" />
<childRecord field1="test2" field2="text2" />
</parentRecord>
<parentRecord field1="foo2" field2="bar2">
<childRecord field1="test3" field2="text3" />
<childRecord field1="test4" field2="text4" />
</parentRecord>
</parentRecords>
SQL Server 2005 で、親テーブルに ID 列があり、子テーブルが親を参照する一連のテーブルに親レコードと子レコードを挿入するストアド プロシージャにこのドキュメントを渡す最速の方法は何でしょうか。外部キー?
ParentTable
-----------
ParentID identity PK int
Field1 nvarchar
Field2 nvarchar
ChildTable
----------
ChildID identity PK int
ParentID FK int
Field1 nvarchar
Field2 nvarchar
C# で ADO.NET と .NET 3.5 を使用しています。データを xml パラメータ タイプまたはテキスト タイプとして送信するオプションがあります。SQL 2005 の最新の XQuery を使用することも、SQL 2000 の古い OPENXML スタイルを使用することもできます。または、SqlBulkInsert などを使用してこれらの挿入を実際に実行できる場合は、最速のものを選択します (この状況ではパフォーマンスが重要です)。助けてくれてありがとう!
編集:
親/子セットを挿入するのは、実際には難しいようです。私は LINQ to SQL を学び、そのフレームワークを自分の製品に統合しようとする立場にありませんでした (私たちはここで開発サイクルに入っています!)。この目的に使用できます。最後に、両方のテーブルで GUID プライマリ キーを使用するようにテーブルを再構築し、API で完全なレコードを生成しました。その後、ADO 2.0 SqlBulkInsert を使用してデータを高速で送信することができました。Daniel Miller に与えられた回答は、SQL Server Bulk Load が、アプリケーションを完全に再構築することなく成功する可能性が最も高かったためです。