Microsoft KB Archive/938653

= List of MS DTC bugs that are fixed in Windows Server 2003 Post-Service Pack 1 MS DTC Hotfix Rollup Package 13 =

Article ID: 938653

Article Last Modified on 12/5/2007

-

APPLIES TO


 * Microsoft COM+ 1.5
 * Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
 * Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
 * Microsoft Windows Server 2003, Standard Edition (32-bit x86)
 * Microsoft Windows Server 2003, Enterprise x64 Edition
 * Microsoft Windows Server 2003, Datacenter x64 Edition
 * Microsoft Windows Server 2003, Standard x64 Edition
 * Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
 * Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems

-



SUMMARY
This article lists the Microsoft Distributed Transaction Coordinator (MS DTC) bugs that are fixed in Microsoft Windows Server 2003 MS DTC Hotfix Rollup Package 13. This package contains the MS DTC-related hotfixes in Windows Server 2003 Post-Service Pack 1 COM+ 1.5 Hotfix Rollup Package 12. Starting with this package, Microsoft will release MS DTC hotfix rollup packages separately from Microsoft COM+ 1.5 hotfix rollup packages. Each package contains all the fixes that were released in the previous Windows Server 2003 MS DTC hotfix rollup package.

Issue that is fixed in the hotfix package
The following issue is fixed in this hotfix package. This issue was not previously documented in a Microsoft Knowledge Base article:

You have two connections to Microsoft SQL Server through two XA branches. If the XA branches have different XA transaction IDs (XID) and different global transaction IDs (GTRID), SQL Server obtains different DTC transaction IDs. Additionally, the operations on these branches will be isolated from one another. However, if the two XA branches have different XIDs but have the same GTRID, SQL Server still obtains a different DTC transaction ID from MS DTC. According to the XA specification, the following behavior is expected:
 * Different XA branches that have the same GTRID can be tightly coupled.
 * The XA branches can see one another's changes.
 * The XA branches should map to the same DTC transaction ID.

Note The current version of MS DTC does not support tightly coupled XA branch behavior.



Hotfix information
A supported hotfix is now available from Microsoft. However, this hotfix is intended to correct only the problem that is described in this article. Apply this hotfix only to systems that are experiencing this specific problem. This hotfix might receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next service pack that contains this hotfix.

To resolve this problem, submit a request to Microsoft Online Customer Services to obtain the hotfix. To submit an online request to obtain the hotfix, visit the following Microsoft Web site:

http://go.microsoft.com/?linkid=6294451

Note If additional issues occur or any troubleshooting is required, you might have to create a separate service request. The usual support costs will apply to additional support questions and issues that do not qualify for this specific hotfix. To create a separate service request, visit the following Microsoft Web site:

http://support.microsoft.com/contactus/?ws=support

Prerequisites
You must have Windows Server 2003 Service Pack 1 or Windows Server 2003 Service Pack 2 installed to apply this hotfix rollup package.

Restart requirement
You must restart the computer after you apply this hotfix rollup package.

Hotfix replacement information
This hotfix does not replace any other hotfixes.

File information
The English version of this hotfix has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in Coordinated Universal Time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time item in Control Panel.

Technical information
The XA specification contains guidelines about the support for loosely coupled XA branches and tightly coupled XA branches. The isolation boundary for loosely coupled XA branches is based on the XID. The isolation boundary for tightly coupled XA branches is based on the GTRID. For more information about tightly coupled XA branches and loosely coupled XA branches, see the XA specification.

MS DTC provides an XA switch that implements the APIs that are defined in the X/Open Distributed Transaction Processing XA specification. This XA switch can be used by any XA transaction manager to communicate with a non-XA resource, such as SQL Server, through MS DTC. The current version of MS DTC only provides support for loosely coupled XA branches. For example, MS DTC has a one-to-one mapping between an XID and an MS DTC transaction ID. The work that is performed by loosely coupled XA branches is isolated from one another.

The XA specification contains guidelines about the support for tightly coupled XA branches. Multiple XA branches that have the different XIDs and the same GTRID can see one another's changes in the resource manager. This hotfix enables the support for tightly coupled XA branches where multiple XA branches with same GTRID are mapped to a single MS DTC transaction ID. This support enables multiple tightly coupled XA branches to see one another's changes in the resource manager, such as SQL Server.

By default, after you apply this hotfix, the xa_open API is used for loosely coupled XA branches. If you want to call the xa_open API for tightly coupled XA branches, you must add the following setting to the xa_info parameter when you call the xa_open API. BrIso=Tight For example, use the following code to call the xa_open API for tightly coupled XA branches. char* pszXaOpenStr=&quot;TM=computerName, RmRecoveryGuid=b3a7647d-8ade-4816-9872-217f01b92071, BrIso=Tight”;

xa_open(pszXaOpenStr, rmid, flags); This hotfix enables both loosely coupled XA branches and tightly coupled XA branches to be present at the same time based on the xa_info parameter string. If XA branches have the same GTRID, one XA branch can be loosely coupled from a set of tightly coupled XA branches.

Additional registry entry
This hotfix provides a new registry key to change how xa_prepare messages are handled. You can add a new registry entry that is called WaitForAllXABranchPrepares to the  registry subkey. This registry entry is of DWORD type. If this registry entry is created and the value is set to 1, MS DTC will wait for all prepare messages.

This registry entry should be enabled or disabled by the application or the user. The XA specification specifies the following:

For tightly coupled XA branches, the resource manager may receive additional work for the same transaction from other branches after prepare messages are sent on one branch.

To enable this scenario, the value of the WaitForAllXABranchPrepares registry entry must be set to 1. After you set the value of the WaitForAllXABranchPrepares registry entry to 1, MS DTC will wait for all tightly coupled XA branches to send prepare messages. Then, MS DTC will delegate the prepare messages to the enlisted resource, such as SQL Server. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

824684 Description of the standard terminology that is used to describe Microsoft software updates

Keywords: kbhotfixserver kbfix kbexpertiseadvanced kbpubtypekc kbqfe KB938653

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.