The information in this article applies to:
BUG #: 56284 (SQLBUG_70) SYMPTOMS
Bound sessions and DTC operations allow multiple SPIDs to bind or enlist in the same transaction scope. This can lead to a condition termed Distributed Deadlock. The SQL Server does not detect the deadlock situation when three or more SPIDs are engaged in two bound or enlisted transactions.
The example clearly shows a deadlock between the two transactions but the deadlock is distributed across multiple SPIDs enlisted in those transactions. If the final update to titles was attempted on SPID 10 instead of SPID 12, the correct deadlock message will be raised. For more details on bound or enlisted sessions refer to the following sections of SQL Server Books Online:
WORKAROUND
Reduce the chances of encountering the deadlock by employing standard deadlock avoidance techniques. Refer to the Avoiding Deadlocks section of SQL Server Books Online for complete details.
The following articles contain additional deadlock information.Q149935 INF: Resolving Deadlocks With Distributed TransactionsQ75722 INF: Reducing Lock Contention in SQL Server STATUSMicrosoft has confirmed this to be a problem in SQL Server version 7.0. MORE INFORMATION
The design of Microsoft Transaction Server (MTS) is such that the behavior can be encountered easier. The MTS components can be registered to use a DTC transaction to complete the proper business logic. However, use of ODBC or OLE DB connections can be pooled by OLE DB Resource Pooling and/or ODBC connection pooling.
The following article contains detailed information and techniques for handling and identifying blocking issues: Q162361 INF: Understanding and Resolving SQL Server Blocking Problems A special consideration: When looking at blocked SPIDs bound or enlisted in the same transaction watch the sysprocesses column open_tran. SPIDs bound or enlisted in the same transaction space contain identical transaction counts. This can help to pattern which SPIDs are part of the same transaction space. Use of SQL Profiler, capturing the text column of the DTC events, records the DTC transaction IDs. (The binary data column can also provide valuable information about bound and enlisted transaction IDs.) When working with DTC transactions specifically refer to the PROPAGATE DTC event to cross reference the SPIDs and which transactions were propagated to which SPIDs. Additional query words:
Keywords : |
Last Reviewed: August 20, 1999 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |