私は、AccessからSQL Server 2008にデータをインポートするアプリケーションを開発中です。現在、ストアドプロシージャを使用してレコードごとにデータをインポートしています。データが2つの関連するテーブルに挿入されているため、一括挿入などでは行けません...アカウントテーブル(名、姓など)と3つのフィールドに入るフィールドがたくさんありますそれぞれがストアドプロシージャのSCOPE_IDENTITYで選択された自動インクリメントAccountIDによってAccountテーブルにリンクされたInsuranceテーブルのレコードを持ちます。ステージングテーブルから複数の関連テーブルにデータを挿入しますか?
アプリケーションからデータベースへの往復回数が多いため、パフォーマンスはあまり良くありません。これといくつかの他の理由から、私はステージングテーブルを使用してそこからデータをインポートすることを計画しています。これに近づくために私のオプションを読んで、ステージングテーブルのデータに同じインサートストアドプロシージャを実行するカーソルが意味をなさないでしょう。しかし、カーソルは悪の化身であり、避けるべきであると思われる。
1つのテーブルにデータを挿入し、自動生成されたIDを取得し、対応するIDを使用して同じレコードのデータをセットベースの操作で挿入する方法はありますか?またはカーソルは私のここの唯一のオプションですか?
SQL Server 2008では、「merge ... output」を使用できます。この質問を見てください。 http://stackoverflow.com/questions/5365629/using-merge-output-to-get-mapping-between-source-id-and-target-id –
BUlkステージングテーブルに挿入します。その後、MERGEとOUTPUTを使用します。 – HLGEM