TransactionScope クラスを使用してトランザクションを開始する Visual Studio 2010 Windows フォーム アプリケーションがあります。次に、正常に動作する Sql Server Broker Services メッセージ キューからメッセージを受信します。次に、Visual Studio データセット (xsd ファイル) であるデータ アクセス レイヤーを呼び出して、同じデータベースからストアド プロシージャを呼び出そうとします。データベースに対してこの 2 回目の呼び出しを行うと、次のエラー メッセージが表示されます。
通信の問題により、MSDTC トランザクション マネージャーはソース トランザクション マネージャーからトランザクションを取得できませんでした。考えられる原因は次のとおりです。ファイアウォールが存在し、MSDTC プロセスの例外がない、2 台のマシンが NetBIOS 名で互いを検出できない、またはネットワーク トランザクションのサポートが 2 つのトランザクション マネージャーのいずれかで有効になっていない。(HRESULT からの例外: 0x8004D02B)。
dcomcnfg.exe を介して DTC アクセスを有効にし、Windows ファイアウォールを介して DTC が通信できるようにすることに関する Web 上の投稿をいくつか見ました。私はそれらのことをしましたが、まだこの問題を抱えています。Windows XP および Vista 上の Visual Studio 2008 で構築された他のプロジェクトで同様のトランザクションを使用しているため、リモート データベース サーバーが DTC アクセスを有効にするようにセットアップされていることはわかっています。Windows 7 と Visual Studio 2010 に固有の何かがこの問題を引き起こしていると思いますが、それが何であるかを見つけることができませんでした。誰でもこの問題を解決できますか?
この問題を抱えている別のプログラマー ( http://www.pcreview.co.uk/forums/thread-3977150.php )からの Web 上の投稿を見たところです。 Windows 7 - x64 でのエラー。Windows 7 の x64 バージョンを実行していますが、Windows 7 の 64 ビット バージョンで MSDTC に問題があるかどうかを知っている人はいますか?