The information in this article applies to:
BUG #: 57127 (SQLBUG_70) SYMPTOMS
In the process of completing a Microsoft Distributed Transaction Coordinator (DTC) transaction abort or commit operation the SQL Server may experience a race condition between 2 or more server process ids (SPIDs) enlisted in the same DTC transaction. CAUSE
SQL Server is not properly protecting the waiting status flag in the shared transaction control block (XCB) between multiple worker threads running on separate processors. This leads to a race condition where the wait flag may not appear to be set by waiting SPIDs.
WORKAROUND
Use a simple T-SQL script to check sysprocesses for SPIDs with a waittype of 0x0201 and excessive wait times, for example > 30 seconds.
When located a simple KILL statement terminates the SPID and returns the worker thread for use by other SPIDs.NOTE: KILL with the abort or commit option is not necessary when dealing with this issue. STATUSMicrosoft has confirmed this to be a problem in SQL Server version 7.0. MORE INFORMATION
The condition requires 2 or more SPIDs to be enlisted in the same DTC transaction. It is extremely timing specific, requiring the worker threads associated with the DTC SPIDs, to run on separate CPUs at the same time. Furthermore, due to timing constraints, it is highly difficult to encounter the problem if the number of SPIDs enlisted in the same DTC transaction exceed maximum CPUs in use by SQL Server.
Additional query words:
Keywords : kbSQLServ700bug |
Last Reviewed: December 13, 1999 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |