質問

同じサーバー上の複数のデータベースにまたがるトランザクションを実行するアプリケーションがあります。当然、これには Microsoft 分散トランザクション コーディネーターが関与しており、すべてが想定どおりに機能します。

ただし、サーバーがホストされているネットワークに VPN 経由でリモート接続し、ローカル マシンでアプリケーションを実行すると、次のエラーが表示されます。

System.Transactions.TransactionManagerCommunicationException:「基礎となるトランザクション マネージャーとの通信に失敗しました。」

のせいで:

System.Runtime.InteropServices.COMException: COM コンポーネントへの呼び出しからエラー HRESULT E_FAIL が返されました。

発生元の例外のスタック トレースは次のとおりです。

System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize、Byte[] propgationToken、IntPtr 管理対象 ID、Guid&transactionIdentifier、OletxTransactionIsolationLevel&isolationLevel、ITransactionShim&transactionShim) で
System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken) で

問題が発生します VPN トンネル経由でサーバーに接続する場合のみ。
また、MSDTC がブロックされないように、ローカル マシンの Windows ファイアウォールを一時的に無効にしていることにも注意してください。

VPN 経由で MSDTC を実行する場合の問題を知っている人はいますか?

役に立ちましたか?

解決

VPN 接続を管理していますか?VPN 上でポートが制限されている可能性があります。同様に、サーバーも管理していますか?サーバーは、VPN サービスに使用されるセグメントではなく、内部の IP アドレスからの接続のみを許可する場合があります。あなたが管理者の場合は、どの VPN ソフトウェアを使用しているかを伝えると役立つでしょう。

他のヒント

DTCPing (Microsoft サイトから入手可能) を実行することをお勧めします。これは両方のマシンで同時に実行され、あらゆる種類の DTC 問題を検出します。

注意してください。実際に説明を読み、テストの開始ボタンをクリックする前にテストの両側を開始するまで、このツールを使用するのは非常に困難でした。

Windows 7 x64 クライアントと Server 2003R2 サーバーを使用しているときにも同じ問題が発生しています。XP、Vista x86、および Windows 7 x86 を使用して (同じ vpn、同じサーバー上で) 動作させることができました。Microsoft にサポート電話を掛けており、現在調査中です。気になるのですが、クライアント マシンではどのようなオペレーティング システムを使用していますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top