FIX: Abort by DTC Transaction Timeout Not Recognized on a Client Application (317973)



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions)

This article was previously published under Q317973
BUG #: 356603 (SHILOH_BUGS)

SYMPTOMS

When a timeout of a Distributed Transaction Coordinator (DTC) transaction occurs, an OLEDB client application may not recognize that a DTC transaction aborted. Being unaware of the DTC transaction abortion, the client application continues to execute updateable queries without error. Because the client application does not know the first query did not commit, the transaction is inconsistent in executing unexpected INSERTs, UPDATEs or DELETEs.

CAUSE

The SQL Server OLEDB provider executes the sp_reset_connection stored procedure, which clears the status of the connection.

RESOLUTION

To resolve this problem, obtain the latest service pack for Microsoft SQL Server 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

290211 INF: How To Obtain the Latest SQL Server 2000 Service Pack

NOTE: The following hotfix was created before the release of Microsoft SQL Server 2000 Service Pack 3.

The English version of this fix should have the following file attributes or later:
   Date          Time      Version      Size               File name
   -------------------------------------------------------------------

  01/02/2002     12:15     8.00.576     7,442,513 bytes    Sqlservr.exe
				
NOTE: Because of ile dependencies, the most recent hotfix or feature that contains the files may also contain additional files.


STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.
This problem was first corrected in Microsoft SQL Server 2000 Service Pack 3.

MORE INFORMATION

If the sp_reset_connection stored procedure does not execute after the DTC transaction aborts, other error messages occur; therefore, the problem described in the "Symptoms" section does not occur. However, if the sp_reset_connection stored procedure executes, the connection can handle queries without error. Thus, updateable queries that execute after the DTC transaction aborts execute outside the DTC transaction. For example, the following steps cause the problem to occur:
  1. DTC transaction starts.
  2. First insert starts.
  3. First insert ends.
  4. DTC transaction aborts.
  5. The sp_reset_connection stored procedure executes.
  6. Second insert starts.
  7. Second insert ends.

Modification Type:MinorLast Reviewed:9/27/2005
Keywords:kbHotfixServer kbQFE kbSQLServ2000sp3fix kbbug kbfix kbSQLServ2000preSP3fix KB317973