質問: 状況:TransactionScopeRequiredオペレーションを使用したWCFサービス。 WCFサービスは、SqlBulkCopyを使用して多数の行をdbに挿入するプロセスを実行します。 TransactionScopeRequired動作を使用せずに使用すると、SqlBulkCopyは問題のないレコードを挿入しますが、この動作をtrueに設定すると、少量のレコードを挿入することはできません。 詳細 - WCFサービスはMSMQエンドポイントを使用します。
回答: 私は上記を.. ..を投稿したときに遅れていた さらに分析したところ、この問題は、Task Processing Libraryを使用している私のサービスの実装に起因していました。つまり、DBコールをTransactionScope内にラップした複数のプロセスがありました。 - 最初のプロセスはDBに対してアクションを実行します。この操作によって、トランザクションスコープのトランザクションにトランザクションが追加され、dbロックが発生します。 - 次に、2番目のプロセスが生成され、同じテーブルに書き込もうとします。これは、トランザクションが元のトランザクションスコープの一部ではないため不可能です。 ソリューション - よりスマートなトランザクション管理を提供するためには、いくつかの再設計が必要になります。