Setting up some new infrastructure with a web and seperate db tier, I was hit with the usual MSDTC woes.
Error messages progressed bit by bit as I opened things up:
Attempt #1: The partner transaction manager has disabled its support for remote/network transactions.
Attempt #2: Network access for Distributed Transaction Manager (MSDTC) has been disabled. Please enable DTC for network access in the security configuration for MSDTC using the Component Services Administrative tool.
Attempt #3: The MSDTC transaction manager was unable to push the transaction to the destination 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.
I couldn’t get past the final error though. DTCPing is a very useful tool if you’re struggling with this, along with this TechNet article on what settings should be in place. One warning popped up that sent me in the right direction:
WARNING:the CID values for both test machines are the same while this problem won’t stop DTCping test, MSDTC will fail for this
As it happens, both machines were from an identical VM clone, and therefore had identical “CID” values. You can check this by going to HKEY_CLASSES_ROOT\CID. Look for the key that has a description of “MSDTC”.
Having found Brian’s article who had done the hard work previously, this set me on my way – essentially you just need to uninstall and reinstall MSDTC on both of the machines. The following worked for me:
- Run “msdtc -uninstall” (from an admin prompt)
- Run “msdtc -install”
- Reconfigure MSDTC again from Component Services\My Computer\Distributed Transaction Coordinator\Local DTC (right click, properties)
And off you go… (don’t forget to enable the predefined DTC rules for local hosts in advanced firewall settings too)