短い: transaction.Commit() の呼び出し後、トランザクションがコミットされなかったかのように、次の操作が失敗します。
詳細: データベースへの書き込みクエリを実行するスレッドがあり、その一部はトランザクションにカプセル化されています。しばらくしてより重い負荷を実行すると、トランザクションのコミット後の操作が失敗し、トランザクションが進行中であることを示すエラーが発生する状況が発生します。コミット後に実行されたアクションに応じて、次のエラーのいずれかが表示されます。
次の操作は「トランザクションの開始:
...接続は並列トランザクションをサポートしていません...
次の操作は挿入/更新/削除です
ExecuteNonQuery では、コマンドに割り当てられた接続が保留中のローカル トランザクションにある場合、コマンドにトランザクションが必要です。コマンドのトランザクション プロパティが初期化されていません。
デバッガーを使用して Sql Connection オブジェクトを調べると、親が null に設定された 'sqlInnerTransaction' オブジェクトが含まれていることがわかります。「Commit」の呼び出しがエラーなしで正常に完了したことはわかっています。
.net 4.0、SQL Server 2008 R2 SP2 の実行