1つのテーブルtableAからtableBにデータをプッシュする必要があります。今私は、後述するようにこれを行うには、単純な挿入スクリプトを使用しています -SQL Server 2012の別のテーブルにエラー行を挿入できます
にtableA
から(COL1、COL2) セレクトCOL1、COL2 今すぐTableBののcol1が主キーであるTABLEB に挿入します。エラーが発生した場合、クライアントは別のエラーテーブルにエラー行を挿入します。挿入のプロセスは止めてはいけません。たとえば、tableAのcol1に同じpk値を持つ2つの行がある場合、最初の行はtablebに挿入し、pk違反の2番目の行は同じ構造を持つ別の表に挿入する必要があります。今私はSQLサーバーでこれを行う方法を理解していません。全体挿入はアトミックトランザクションです。これはトランザクションのプロパティです。
キャッチブロックでこれをどのように管理できるか
私はあなたのストアドプロシージャで意味catchブロックで仮定? catchブロックは、アトミックトランザクション全体のエラーをキャッチします。だから...複数の行の挿入を行うcatchブロックでこれを管理することはできません。あなたはもっと細かいレベルでこの種のものを扱う必要があります。ループが心に浮かびますが、実際のルールに応じて、代わりに複数の挿入ステートメントを使用できる場合があります。 –
はい上記の挿入文はspです。ルーピングは非常に遅いプロセスになります。毎月のプッシュが必要な記録は6000万件近くあります。 – sam
そうですね、ループの代わりに2つの挿入ステートメントでこれを行うことができたと言われています。何が起こっているのかに関する情報があまりないので、ここではたくさんの提案をするのは難しいです。受け入れられる行を挿入します。 2番目に、PKに違反する行が挿入されます。 –