Saturday, June 28, 2014

MSDTC Log Full Error Resolution on BizTalk Server

 As we know BizTalk is heavily dependent on MSDTC for controlling the transactions e.g. adapters like WCF-SQL, MSMQ adapters span MSDTC transaction for maintaining the transaction between BizTalk MsgBox and other system. The MSDTC service normally works fine without any issues however in case of high concurrent volume, MSTDC transaction log can get full because its default size is 4MB only. In such cases BizTalk adapters starts returning following errors
System.Transactions.TransactionException: The Transaction Manager returned a log full error. (Exception from HRESULT: 0x8004D01A) ---> System.Runtime.InteropServices.COMException: The Transaction Manager returned a log full error. (Exception from HRESULT: 0x8004D01A)

Resolution

In order to fix the issue, perform following steps:
  • Stop all BizTalk hosts trying to initiate a transaction with MSDTC on particular server having issues.
  • Logon to the server with Admin privilege account and Run dcomcnfg to launch the Component Services Console. In Component Services Go to Local DTC as shown below:
      
  • Right Click on Local DTC and go to Properties and Select Logging Tab as shown below:
      
  • Increase the capacity from 4MB to the size based on your volume e.g. 50 or 100MB and hit OK. On Pressing OK, It will restart the MSDTC service on the server.

Notes  

  • If you are not using Admin account on server and try to follow above steps, MSDTC service will not restart properly and will give error.
  • After restart of MSDTC service successfully, if you are using MSMQ adapter then make sure you also restart MSMQ service on the server, otherwise even after increasing the log size, and restarting all hosts, you will get an error "Transaction can't be enlisted".