私は読者の中をループし、読者が読んでいる別のテーブルを更新しています。すべての1000のループは、私が)(トランザクションの独立をコミットしたいが、それは誤り与えている:私は2件の他の回答を見てきたし、そのうちの一つは、読者に近いと述べたが、我々は明らかに我々が「としてそれを行うことはできませんdatareaderループ内でトランザクションをコミットする
The transaction operation cannot be performed because there are pending requests working on this transaction.
をリーダーからのそのデータを使用して更新ステートメントを実行し、別のテーブルを更新します。
それで、接続でトランザクションを作成すると、sqlコマンドをループしているデータレアがあります。どのようにしてdatareaderループ内でupdateコマンドを実行し、トランザクションをcommit()することができますか? datareaderループ?
1)2番目の接続を開き、トランザクション更新のためにそれを使用します。
あなたのコードを投稿することができますか?トランザクションで異なるトランザクション分離レベル設定が必要な同時実行性の問題が発生する可能性があります。 –
これは、既にアプリにあった既存のdatareaderループにこれを挿入しているので、面倒で深みのあるコードです。それを打破するのは難しいです。このようなことをすることが一般的であるか、それが可能でない場合、私はちょうど興味がありました。 – user441521
トランザクション書き込み操作に2つ目の独立した接続を使用することができます(なぜなら、トランザクションを1000行ごとにコミットするのは、一括更新だけではなく、それをコミットするかどうかです)、またはデータ・レイアウト・コンストラクタ・オプション私は正確に覚えていない "更新可能な"モードを使用していましたが、これはトランザクション内で異なった振る舞いをしていて、調べる価値があるかもしれません。 – dlatikay