Microsoft KB Archive/234673

= FIX: ITransactionResourceAsync::TMDown not Delivered to Resource Manager =

Article ID: 234673

Article Last Modified on 4/7/2006

-

APPLIES TO


 * Microsoft Windows NT 4.0
 * Microsoft Transaction Services 2.0
 * Microsoft SQL Server 6.5 Standard Edition
 * Microsoft SQL Server 7.0 Standard Edition

-



This article was previously published under Q234673



SYMPTOMS
Under certain circumstances, the Microsoft Distributed Transaction Coordinator (MSDTC) fails to deliver a notification that the transaction manager (MSDTC) is not delivering (ITransactionResourceAsync::TMDown) to a resource manager.

Normally, a ITransactionResourceAsync::TMDown notification is sent if the transaction manager shuts down after the resource manager has signaled that it is finished processing the prepare request (ITransactionEnlistmentAsync::PrepareRequestDone), and usually before the transaction manager requests a commit or abort request (ITransactionResourceAsync::CommitRequest or ITransactionResourceAsync::AbortRequest). If the transaction manager shuts down after a prepare request (ITransactionResourceAsync::PrepareRequest) is sent, but before the resource manager replies that it has finished processing the prepare request (ITransactionEnlistmentAsync::PrepareRequestDone), then the ITransactionEnlistmentAsync::PrepareRequestDone call succeeds and the transaction manager shut down notification is delivered (ITransactionResourceAsync::TMDown).

However, it is possible for the ITransactionEnlistmentAsync::PrepareRequestDone call to succeed, but the transaction manager fails to deliver the notification that it is shutting down (ITransactionResourceAsync::TMDown). The resource manager then recieves the final notification that the transaction manager is shutting down (IResourceManagerSink::TMDown) later, but notifaction for the transaction is lost. This loss of notification can cause the resource manager to stop responding or it can cause an error depending on how this case is handled by the resource manager.



CAUSE
This is a bug in MSDTC. This bug affects all versions of MSDTC, up to and including, the version that ships with Windows NT 4.0 Service Pack 5. It is corrected in Windows NT 4.0 Service Pack 6.



Windows NT Server or Workstation 4.0
To resolve this problem, obtain the latest service pack for Windows NT 4.0 or the individual software update. For information on obtaining the latest service pack, please go to:


 * http://www.microsoft.com/windows/servicepacks/ -or-


 * 152734how to obtain the latest windows nt 4.0 service pack

For information on obtaining the individual software update, contact Microsoft Product Support Services. For a complete list of Microsoft Product Support Services phone numbers and information on support costs, please go to the following address on the World Wide Web:

http://support.microsoft.com/directory/overview.asp

Windows NT Server 4.0, Terminal Server Edition
To resolve this problem, obtain the latest service pack for Windows NT Server 4.0, Terminal Server Edition. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

152734 How to Obtain the Latest Windows NT 4.0 Service Pack



STATUS
Microsoft has confirmed that this is a problem in Windows NT 4.0 and Windows NT Server 4.0, Terminal Server Edition.

This problem was first corrected in Windows NT Server 4.0 Service Pack 6 and Windows NT Server 4.0, Terminal Server Edition Service Pack 6.



MORE INFORMATION
You should install hotfix 061299a if you are experiencing the DTC problems discussed in the "Symptoms" section.

Installation
This hotfix should only be installed on systems running Microsoft Windows NT version 4.0 (Service Pack 5 or later is recommended). It should not be installed on systems running Microsoft Windows NT version 3.51 or Microsoft Windows 2000.

Note that this hotfix is based on the version of Microsoft DTC included with the Windows NT 4.0 Service Pack 5 release. By installing this hotfix, you are upgrading Microsoft DTC to the Windows NT 4.0 Service Pack 5 release level in addition to correcting the problems described here.

How to Install on a Non-Clustered System
 Create an empty temporary directory on your system. Run the self-extracting executable file [i061299a.exe (i386) or a061299a.exe (alpha)] and type the name of the temporary directory when you are prompted to do so. The program unzips the following files into the temporary directory:

Dtcsetup.exe

Qfe061299a.txt

 Stop the Microsoft DTC Service. Stop all services that depend on Microsoft DTC (including Microsoft Transaction Server, Microsoft SQL Server, Microsoft Message Queue, and Microsoft COM Transaction Integrator (COMTI)). Close Control Panel. Run Dtcsetup.exe.</li> Restart the system.</li> Restart all services that depend on DTC.</li></ol>

How to Install on a Cluster with Already Clustered Microsoft DTC
<ol> Create an empty temporary directory on both nodes of the cluster.</li> Run the self-extracting executable file [i061299a.exe (i386) or a061299a.exe(alpha)] on both nodes of the cluster and type the name of the temporary directory when you are prompted to do so. The program unzips the following files into the temporary directory:

Dtcsetup.exe

Qfe061299a.txt

</li> Use the MSCS Cluster Administrator to stop the Microsoft DTC Cluster Resource. Stop all services that depend on Microsoft DTC (including Microsoft Transaction Server, Microsoft SQL Server, Microsoft Message Queue, and Microsoft COMTI).</li> Close the Windows NT Control Panel on all systems in the cluster.</li> Run Dtcsetup.exe on the node that controls the Microsoft DTC cluster resource. When you are prompted to install Microsoft DTC on the other nodes in the cluster, run Dtcsetup.exe on those nodes.</li> Restart all systems.</li> Restart all services that depend on Microsoft DTC.</li></ol>

How to Install on a Cluster with a Non-clustered Microsoft DTC
<ol> Create an empty temporary directory on both nodes of the cluster.</li> Run the self-extracting executable file [i061299a.exe (i386) or a061299a.exe (alpha)] on both nodes of the cluster and type the name of the temporary directory when you are prompted to do so. The program then unzips the following files into the temporary directory:

Dtcsetup.exe

Qfe061299a.txt

</li> Stop the Microsoft DTC service on all systems in the cluster. Stop all services that depend on Microsoft DTC (including Microsoft Transaction Server, Microsoft SQL Server, Microsoft Message Queue, and Microsoft COMTI).</li> Close Windows NT Control Panel on all systems in the cluster.</li> When you install this release on a clustered system, the setup program automatically installs a clustered version of Microsoft DTC. The clustered version of Microsoft DTC requires a MSCS Resource group that contains both a Network Name Resource and a Shared Disk Resource. Before installing this release, ensure that at least one such MSCS Resource group exists. Dtcsetup.exe assigns Microsoft DTC to the first MSCS Resource group that it finds that contains both a Network Name resource and Shared Disk resource. After ensuring that the necessary resource group exists, run Dtcsetup.exe on the node controlling that resource group.</li> When you are prompted to install Microsoft DTC on the other nodes in the cluster, run Dtcsetup.exe on those nodes.</li> Restart all systems.</li> <li>Restart all services that depend on Microsoft DTC.</li></ol>

Keywords: kbbug kbfix kbqfe kbdtc kbhotfixserver KB234673

-

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

© Microsoft Corporation. All rights reserved.