title: The MSDTC transaction manager was unable to push the transaction to the destination transaction manager due to communication problems
body: <p>I have a BizTalk server and a SQL server which BizTalk sends messages via WCF-SQL to. The BizTalk server has been calling to this server for over a year with no problems. I came in this morning any suddenly it can't (it was working on Friday).</p>
  
  <p>The full error I'm getting when calling the WCF-SQL endpoint is:</p>
  
  <pre><code>A message sent to adapter "WCF-SQL" on send port "MyPort" with URI "mssql://mySQLServer" is suspended.
  Error details: System.Transactions.TransactionManagerCommunicationException: Communication with the underlying transaction manager has failed. ---&gt; System.Runtime.InteropServices.COMException:
  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. (Exception from HRESULT: 0x8004D02A)
  at System.Transactions.Oletx.ITransactionShim.Export(UInt32 whereaboutsSize, Byte[] whereabouts, Int32&amp; cookieIndex, UInt32&amp; cookieSize, CoTaskMemHandle&amp; cookieBuffer)
  at System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts)
  </code></pre>
  
  <p>I've followed instructions from the following thread:
  <a href="https://stackoverflow.com/questions/29414250/msdtc-on-server-server-is-unavailable">MSDTC on server &#39;server is unavailable</a></p>
  
  <p>I've run <code>msdtc -uninstall</code> then <code>msdtc -install</code> and restarted the service several times. </p>
  
  <p>I've rebooted the server several times.</p>
  
  <p>I can connect to the database using Sql Server Management Studio</p>
  
  <p>DTCPing when trying to connect from the SQL server to the Biztalk server results in (when DTCPing is running on the BizTalk):</p>
  
  <pre><code>Problem:fail to invoke remote RPC method
  Error(0x6BA) at dtcping.cpp @303
  --&gt;RPC pinging exception
  --&gt;1722(The RPC server is unavailable.)
  RPC test failed
  </code></pre>
  
  <p>when going from Biztalk to SQL I get this (even thought DTCPing is running on the other end)</p>
  
  <pre><code>Please refer to following log file for details:
  C:\Temp\DTCPing\myserv.log
  Invoking RPC method on dbaditest
  RPC test is successful
  ++++++++++++RPC test completed+++++++++++++++
  Please start PING from dbaditest to complete the test
  </code></pre>
  
  <p><strong>neither</strong> server is running a firewall at all</p>
  
  <p>I'm all out of things to try.</p>
  
  <p><strong>Edit:</strong> I can confirm that other servers/computers can connect to the SQL server. So I have to assume that it's the BizTalk server that is the problem.</p>
  
  <p><strong>Edit 2:</strong> I tried connecting from BizTalk Server to another SQL server on the network and got the same error. I'm moments away from throwing my hands up and rebuilding my dev environment -- ugg :(</p>
  
  <p><strong>Edit 3:</strong> I can telnet to port 135 from BizTalk to SQL Server, so there's nothing blocking it.</p>
  
  <p><strong>Edit 4:</strong> DTCTester results in:</p>
  
  <pre><code>tablename= #dtc24449
  Creating Temp Table for Testing: #dtc24449
  Warning: No Columns in Result Set From Executing: 'create table #dtc24449    (ival int)'
  Initializing DTC
  Beginning DTC Transaction
  Enlisting Connection in Transaction
  Error:
  SQLSTATE=25S12,Native error=-2147168242,msg='[Microsoft][ODBC SQL Server Driver]Distributed transaction error'
  Error:
  SQLSTATE=24000,Native error=0,msg=[Microsoft][ODBC SQL Server Driver]Invalid cursor state
  Typical Errors in DTC Output When
  a.  Firewall Has Ports Closed
  -OR-
  b.  Bad WINS/DNS entries
  -OR-
  c.  Misconfigured network 
  -OR-
  d.  Misconfigured SQL Server machine that has multiple netcards.
  Aborting DTC Transaction
  Releasing DTC Interface Pointers
  Successfully Released pTransaction Pointer.
  </code></pre>