1

Microsoft Distributed Transaction Coordinator (MSDTC) 関連の問題が発生しているようです。

シナリオ

私は TransactionScope を使用しており、単一のスコープで異なるサーバー上の 2 つの異なるデータベースにヒットします (たとえば、Windows Server 2003 を実行しているDB_Aと Windows Server 2008 を実行しているDB_B )。1 つのデータベースには Entity Framework 4.0 を使用してアクセスし、別のデータベースには通常の ADO.NET API を使用してアクセスします。

開発マシン (WinXP を実行) からアプリケーションを実行すると、両方の接続が正確にコミットおよびロールバックされます。しかし、別のサーバー ( Windows Server 2003 を実行しているWAS_Aなど) にデプロイされたアプリケーションを実行すると、アプリケーションは正しくコミットされますが、例外が発生した場合、両方のサーバーでデータベース アクティビティがロールバックされません。

WAS_Aの MSDTC 構成の問題だと思いました。そこで、MSDTC -> Security Configuration に移動し、利用可能なすべてのオプションを確認しました (以前に他のマシンで行ったように)。しかし、それでも私は同じ問題に直面しています。

あなたの専門家のアドバイスを探しています。:)

4

1 に答える 1

0

Enable Transaction Flowを調べる必要があると思います。具体的には、 TransactionScope と WCF Servicesで説明されているように、一方がエラーになり、他方が完了する方法を見てください。

2 番目の WCF サービス呼び出しのエラーは、以前の WCF サービス呼び出しで行われた変更をロールバックしていませんでした...クライアントでアンビエント トランザクションを作成し、それが WCF サービスによって使用されるようにするために...

この記事では、次の手順について詳しく説明します。

  • バインディングを構成するtransactionFlow
  • インターフェイスを装飾する[TransactionFlow(TransactionFlowOption)]
  • メソッドを装飾する[OperationBehavior(TransactionScopeRequired)]
  • Transaction Binding必要に応じて、接続文字列を*で更新します

*注: これは私の意見ではオプションです。

于 2013-01-08T15:34:45.607 に答える