関連するいくつかのテーブルにデータを挿入する挿入トランザクションを長時間実行しています。
この挿入の実行中は、メインテーブルから選択 * を実行できません。選択は、挿入が完了するまでホイールを回転させるだけです。
これらの挿入のいくつかを同時に/重複して実行します。情報が 2 回挿入されていないことを確認するために、最初に MainTable にクエリを実行して、エントリが存在するかどうか、およびその処理済みビットが設定されていないかどうかを確認します。
挿入トランザクション中に、その行の MainTable 処理済みビットを反転します。
そのため、テーブルを読み取って、特定の行が現在更新されているかどうかを確認できる必要があります。
Microsoft SQL 2005 でこれを設定する方法についてのアイデアはありますか? SET TRANSACTION ISOLATION LEVELのドキュメントを調べています。
ありがとう、
キース
編集: 同じ挿入バッチが同時に発生するとは思わない。これらは、処理中のバイナリ ファイルであり、そのデータがデータベースに挿入されます。データを解析して挿入する前に、ファイルが処理されていないことを確認します。チェックを行うとき、ファイルが表示されていない場合は、処理されたビットを false に設定して MainTable にすばやく挿入します。
テーブル全体ではなく、更新中の行をロックする方法はありますか?