Share this

Why does BizTalk need MSDTC?

The Microsoft Distributed Transaction Coordinator (MSDTC) service is the component included with Windows 2000 and above that is responsible for providing and coordinating transactions between multiple Windows machines. This is used by COM and .NET to provide transactional capabilities for programs built on either of these systems. To ensure that all operations are transactional in an environment that may potentially contain multiple servers all performing different roles, BizTalk uses MSDTC to ensure that the operations are transactionally consistent. BizTalk does distributed transactions across the various BizTalk databases like BizTalkMsgBoxDb (MessageBox), BizTalkMgmtDb (Management), BizTalkDTADb (Tracking and Archiving), BizTalkRuleEngineDb, or BAMPrimaryImport and other (BAMStar, etc.). If you want transactional receiver you again need MSDTC. Each computer, in a distributed transaction, has its own resources and participates as an element in the global transaction that must be committed or aborted across all the servers involved. MSDTC performs the coordination role for the components (and machines) and decides if a global transaction is successfully committed or must be rolled back. Consider a scenario where three servers are involved in the transaction: the MQSeries server, the BizTalk Receive host server, and the SQL server that hosts the BizTalk MessageBox. MSDTC is used throughout to ensure that the operation is done atomically (that is, the message is either successfully removed from MQSeries or published into the MessageBox or the transaction is aborted and it remains on the queue). MSDTC is also used whenever BizTalk persists data to the MessageBox (for example, when a persistence point is hit in an orchestration). It is clear from these scenarios that if MSDTC is not working correctly, it is impossible for BizTalk to perform any of these actions in a transactional manner. Checking MSDTC Security Options By default, network DTC access is disabled on operating system, meaning that the machine will not accept or send network DTC traffic. Given that BizTalk requires this, you must modify the default network DTC configuration for proper operation. This is one of the most common MSDTC issues that I have seen when working with customers. Network DTC access is strictly required only if a multibox installation of BizTalk has been done (including separating SQL and BizTalk on separate boxes) or if an adapter that requires MSDTC, such as the MQSeries adapter, is used. To configure the correct MSDTC settings:
  1. Go to the Administrative Tools folder in Control Panel and double-click Component Services.This will open the Microsoft Management Console (MMC).
  1. Expand Component Services and open the Computers folder.
  2. Right-click My Computer, select Properties, and then click the MSDTC tab.
  3. Configure the MSDTC
  Related Links: http://social.technet.microsoft.com/wiki/contents/articles/6917.biztalk-server-2010-msdtc.aspx http://blogs.technet.com/b/biztalkpfe/archive/2011/01/12/understanding-msdtc-amp-biztalk.aspx

Loved this? Spread the word


Gautam

Follow me here

About the Author

My name is Gyanendra Kumar Gautam. I am Solution Consultant, who basically works to hook the stuff together using Microsoft technologies like Azure PaaS, Azure Serverless Services, Microsoft BizTalk Server, and Azure DevOps Services.

You may also like

The source was not found, but some or all event logs could not be searched. To create the source, you need permission to read all event logs to make sure that the new source name is unique. Inaccessible logs: Security.

Yesterday this error came for one of the deployment on production. But the same deployment was working fine on staging environment. A message received by adapter “MSMQ” on receive location “RL_XYZ_RES_09” with URI “FORMATNAME:DIRECT=OS:.\PRIVATE$\XYZ_RES_09” is suspended. Error details: There was a failure executing the receive pipeline: “BTSHttpDecoder.DecoderPipeline, BTSHttpDecoder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5793a821957af7d1” Source: “MessageDecoderPipelineComponent_F09” Receive Port:

Read More

BizTalk Project Template is missing in Visual Studio 2012

I ran couple of times into this issue so thought of documenting it here. So first of all development of BizTalk Server 2013 application is only supported on Visual Studio 2012. In short, to get BizTalk Project Template do the following steps: Install Visual Studio 2012 Install SQLServer2012 or SQLServer2008R2 SP1 Install BizTalk Server 2013  – Select (mark

Read More

There is no value associated with the property ‘BTS.MessageID’ in the message.

In the following orchestration (This is the HelloWorld sample application at C:\Program Files (x86)\Microsoft BizTalk Server 2013\SDK\Samples\Orchestrations\HelloWorld\)     Inside the message assignment shape I have added the following code. System.Diagnostics.EventLog.WriteEntry(“HelloWorld”,InvoiceMessage(BTS.MessageID)); Now when I deploy and test the HelloWorld application, I get the following error xlang/s engine event log entry: Uncaught exception (see the ‘inner exception’ below)

Read More

Never miss a good story!

 Subscribe to my blog to keep up with the latest news!