Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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

like image 995
MARKAND Bhatt Avatar asked Sep 16 '14 07:09

MARKAND Bhatt


People also ask

How do I view MSDTC transactions?

In the Component Services, navigate to Computers-> My Computer -> Distributed Transaction Coordinator -> Local DTC. In the transaction list, you see an active DTC transaction.

What does the MSDTC transactionmanagercommunicationexception mean?

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.

What are the errors In MSDTC?

Error details: System.Transactions.TransactionManagerCommunicationException: Communication with the underlying transaction manager has failed. ---> System.Runtime.InteropServices.COMException: The MSDTC transaction manager was unable to push the transaction to the destination transaction manager due to communication problems.

What went wrong with MSDTC 14 MVC 3?

14 MVC 3 : The MSDTC transaction manager was unable to pull the transaction from the source 27 MSDTC - Communication with the underlying transaction manager has failed 0 The MSDTC transaction manager was unable to push the transaction using AmbientTransaction

What happens if MSDTC transaction support is not available?

If MSDTC transaction support is not available, then the associated BizTalk Server runtime operations cannot proceed.


2 Answers

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.

like image 174
veljkoz Avatar answered Sep 23 '22 21:09

veljkoz


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.

like image 28
LpiAlreadyTaken Avatar answered Sep 20 '22 21:09

LpiAlreadyTaken