MSMQエンドポイントを使用しています。 私のサービスで次の属性を設定しました。インターフェイス上で WCF(MSMQ)サービスでDTCを無効にする
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void MyMethod(MyParam param) { ... }
は私が
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, ReleaseServiceInstanceOnTransactionComplete = true)]
を持っている私は、SQL Serverデータベースへの更新を行い、MSDTCが常に使用され、トランザクションが促進されるメソッドを持っています。
これを抑制するにはどうすればよいですか。 MSMQトランザクションと完全に別個のトランザクションにあるSQL Serverへの接続を作成するにはどうすればよいですか。 DTCトランザクションではなく、SQLトランザクションのみが必要です。 SQLトランザクションがMSMQトランザクションのスコープに含まれないようにする方法はありますか?
私はこれを、私が検討しているMSMQ上で完全にトランザクションを取り除かずに済ませたいと考えています。
よろしく
クレイグ
DTCトランザクションは、MSMQとSQLの更新をまとめて保持します。トランザクションを分離すると、MSMQメッセージがSQLの更新に使用されることを保証できません。信頼性の高いMSMQメッセージがまだありますが、メッセージから抽出されたデータは保護されません。メッセージの読み込みとデータベースへの書き込みとの間にエラーがあった場合、回復はありません。 –