MSDTC Transaction Managerは、通信の問題のためにソーストランザクションマネージャからトランザクションを引き出すことができませんでした -- sql-server フィールド と transactions フィールド と windows-server-2008 フィールド と windows-server-2003 フィールド と msdtc フィールド 関連 問題

The MSDTC transaction manager was unable to pull the transaction from the source transaction manager due to communication problems












13
vote

問題

日本語

サーバー1上の私のWebアプリケーションとサーバー2

の私のデータベースをホストしました

しかし、私は次のエラーを受けています

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

私はGoogledとDTC(分散トランザクション)の問題であると述べた投稿を見つけました 私はServer2(DB Server)でDTCを有効にし、ファイアウォールでそれを除く。

画像の説明を入力します。

画像の説明を入力します。

まだ同じエラー。

これはフルスタックトレース

です

メッセージ:System.Transactions.TransactionManagerCommUnicationException:基礎となるトランザクションマネージャとの通信が失敗しました。 ---> System.Runtime.InteropServices.ComeXception:MSDTC Transaction Managerは、通信の問題のためにソーストランザクションマネージャからトランザクションを引き出すことができませんでした。考えられる原因は次のとおりです。ファイアウォールが存在し、MSDTCプロセスの例外がありません.2つのマシンはNetBIOS名によって互いに見つからないか、またはネットワークトランザクションのサポートが2つのトランザクションマネージャの1つに対して有効になっていません。 (HRESULTの例外:0x8004D02B) system.transactions.oletx.idtcProxyShimFactory.ReceiveTransaction(uint32 propgationTokensize、byte [] propgationToken、INTPTR ManagedIndientifier、GUID& TransactIndifier、OletxToken、GUI​​D& IslationShim& TransactionShim) System.Transactions.TransactionInterop.getOletxTransactionFromTransmitterPropigationTokenToken(Byte [] PropagationToken)

親切にアドバイス

英語

I have hosted my Webapp on server 1 and my database on server 2

But i m getting following error

"Communication with the underlying transaction manager has failed."

I googled and found a post which mentioned that it is the issue of DTC(Distributed Transaction) I enabled DTC on server2(DB server) and made an exception of it in Firewall.

enter image description here

enter image description here

But still same error.

Here is the full stack trace

Message: System.Transactions.TransactionManagerCommunicationException: Communication with the underlying transaction manager has failed. ---> System.Runtime.InteropServices.COMException: The MSDTC transaction manager was unable to pull the transaction from the source transaction manager due to communication problems. Possible causes are: a firewall is present and it doesn't have an exception for the MSDTC process, the two machines cannot find each other by their NetBIOS names, or the support for network transactions is not enabled for one of the two transaction managers. (Exception from HRESULT: 0x8004D02B) at System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize, Byte[] propgationToken, IntPtr managedIdentifier, Guid& transactionIdentifier, OletxTransactionIsolationLevel& isolationLevel, ITransactionShim& transactionShim) at System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken)

Kindly advice

</div
              
   
   

回答リスト

18
 
vote

まったく同じ状況を持っていました。毎回、それは次のいずれかでした:

  1. サーバのDNSのIPアドレスは古くなっています(エラーメッセージでは: " 2台のマシンがNetBIOS名"で見つけることができません)。コマンドプロンプトで、あるサーバーから別のサーバーから別のサーバーへの ping servername を実行して、これがケースであるかどうかを確認できます。 PING by nameが失敗し、IPによるpingが成功した(または名前でping pingを返します)、DNS / DHCPを調べるためにシステム管理者と相談する必要があります。

  2. サーバは事前設定されたサーバのイメージとして作成されます(たとえば、仮想マシンを操作している場合は、サーバーごとに新規インストールを行うのではなく、単に画像を複製します)。 DTCには内部 "識別子"があるため、これは問題です。そして、イメージのクローニングの場合、両方のインストールが同じDTC IDを持ち、互いに通信できません。解決策はDTCを再インストールして再度インストールすることです。

  3. それが役立つことを願っています。

 

We had the exact same situation, and more than once. Each time, it was one of the following:

  1. The IP address in the DNS for the server is outdated (as said in error message: "two machines cannot find each other by their NetBIOS names"). You can check if this is the case by trying ping servername from one server to another in the command prompt. If the ping by name fails and ping by IP succeeds (or ping by name returns the wrong IP), than you should talk to the System Admins to take a look at DNS/DHCP.

  2. The servers are created as an image of preconfigured server (for example, if you are working with virtual machines, and instead of doing a fresh install for each of the servers, you simply clone the image). This is a problem because DTC has an internal "Identifier" - and in case of image cloning both your installations now have same DTC ID, and won't be able to communicate with each other. The solution is to simply uninstall and install the DTC again.

Hope it helps.

</div
 
 
   
   
2
 
vote

リモートSQL Serverへの接続中に同じ問題がありました。 My Caseのソリューションは、接続文字列に "enlist=false" を追加することでした。

 

I had the same problem while connecting to a remote SQl Server. The solution in my case was to add "enlist=false" to the connection string.

</div
 
 
 
 
1
 
vote

チェックするもの:

  • 両方のサーバーでこの設定をしましたか?
  • どちらも同じドメインのサーバーメンバーですか?
  • イベントログを確認しましたか?
 

Things to check:

  • Have you done this configuration on both servers?
  • Are both servers members of the same domain?
  • Have you checked the event log?
</div
 
 
0
 
vote

サーバー上のファイルにリモートIP Machine Nameを追加した後に解決されました。 ホスト、LMhosts. フォルダの中で C: Windows System32 Drivers etc

 

Solved after adding remote IPmachine name to files on server: hosts, lmhosts in folder C:WindowsSystem32driversetc

</div
 
 

関連する質問

1  MSSQL2008:DTCトランザクション - 内部アボート  ( Mssql2008 dtc transaction internal abort ) 
小さい独自のレプリケーションを書き込みます - 他のサーバーへのDTC挿入を解消するトリガー(私自身の "レプリケーションの1つの理由の1つの理由):トリガーが実行されている間、それはいくつかのデータを計算します。これはExpressバージョンからExpres...

2  MSDTCでは「リモートクライアントを許可する」と「リモート管理を許可する」とはどういう意味ですか?  ( What does allow remote clients and allow remote administration mean in msdtc ) 
いくつかの製造マシンのMSDTCを構成しようとしていて、特に「リモートクライアントを許可する」、「クライアントおよび管理」の下の「リモートクライアントを許可する」という意味を学習することが困難になっています。 検索時間の後、これは私が見つけたものです: ...

2  TransactionScopeとMSDTCを使用してデータベースユニットテストが失敗するのはなぜですか?  ( Why does vs database unit tests using transactionscope and msdtc fail ) 
DatavaseTestFixture コミットされていないTransactionScopeを使用しているクラスは、すべての変更がロールバックされます。テストは問題なくローカルデータベースに対して実行されました。 その後、単体テストを実行しているマシン上...

0  MSDTCがSQLServer分散トランザクションを孤立させる  ( Force msdtc to orphan a sqlserver distributed transaction ) 
プロジェクトのWebSphereベースのJavaeeアプリケーションをシャットダウンするときに、分散トランザクションはSQLServer 2005データベースに生き残ることがあります。これらは永遠にロックを保持し、手動で殺されなければなりません。それらは一般的...

0  MSDTC Transaction ManagerはAmbientTransactionを使用してトランザクションをプッシュできませんでした  ( The msdtc transaction manager was unable to push the transaction using ambienttr ) 
私は、テーブルを照会して更新するストアドプロシージャを呼び出すBizTalkソリューションを持っています。私はロードバランスの取れたサーバーで私の解決策をテストするたびにこのエラーに遭遇しています。 アダプタは、URL "MSSQL:// Server //...

2  Entity Frameworkを使用してMSDTCを使用したプロバイダの障害  ( Provider failure using msdtc with entity framework ) 
私はDBに保存しているアプリを(Entity Frameworkを使用)し、単一の保存内のSharePointにドキュメントを保存します。 TransactionScopeでMSDTCを使用しようとしています。 私のEFインサートロジックの一部は、データ層に...

1  MSDTCを使用してリンクサーバーエラー  ( Linked server error using msdtc ) 
インターネットを介して2つのシステム間の「リンクサーバ」を使用したデータトランザクションのストアドプロシージャの一例を示す <事前> <コード> Alter Proc [dbo].[usp_Select_TransferingDatasFromServerCh...

0  複数のセッションに関するNhibernateトランザクション問題  ( Nhibernate transaction problem with multiple sessions ) 
MS SQL Server 2008を使用してWindowsサービスで実行するのにNhibernateを設定しました。操作がアトミックであることを確認するために、通常のTransactionScopeを使用します。 Nhibernateは、アセンブリごとにセ...

2  Windows 7(32ビット)とWindows Server 2003の間のMSDTC  ( Msdtc between windows 7 32bit and windows server 2003 ) 
私は現在、クラシックASPとASP.NETの混合を使用しているウェブサイトのテスト環境を作成しようとしています。 (元のマシンは古いバージョンのWindows Serverを実行しているので、設定は模倣できません) 残念ながら、私はWindows 7からサーバ...

7  DTCPINGとDTCTERSの違いは何ですか?  ( Whats the difference between dtcping and dtctester ) 
MSDTCの問題を診断する前にDtcterSterを使用しました。しかし、私はちょうどDTCPINGが同じことについてするように思われます。これら2つの違いは何ですか? 私がこれまでに知ることができるものから、Dtcpingはクライアントマシンとサーバーの両...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有