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.

MSDTC blocks

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

MSDTC Table1

MSDTC properties

 

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

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s