SQL Server error 8510 may be reported unnecessarily (307802)



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions)

This article was previously published under Q307802

SYMPTOMS

Under rare conditions, the following error message is returned to the client and logged to the Microsoft SQL Server error log:
Error: 8510, Severity: 20, State: 1
Enlist of MSDTC transaction failed: Result Code = 0x8004d00e..

Under the conditions that are described in this article, the logging of error 8510 is considered unnecessary. For details about the specific conditions, see the "More Information" section.

Beginning with SQL Server 2000 Service Pack 1 (SP1), error 8510 is not logged to the error log under the conditions that are described in this article. Instead, error 8510 is raised internally within SQL Server but is not sent to the client or logged in the error log. You still see error 8510 in SQL Profiler if you are capturing the Exception event.

CAUSE

A rare condition can occur when a server process ID (SPID) makes a call to the sp_reset_connection stored procedure. That SPID first obtains a reference to the Microsoft Distributed Transaction Coordinator (MSDTC) transaction. Later, it may try to enlist in the transaction. If the transaction has been committed or aborted between the time that the reference is obtained and the time that the attempt to enlist occurs, SQL Server raises error 8510.

MORE INFORMATION

The 8510 error message can occur when two SQL Server SPIDs are working on behalf of the same MSDTC transaction. One of the SPIDs is completing a successful abort or commit operation. The second SPID is trying to re-enlist or reset the connection state. The reset is generally associated with connection pooling operations. The second SPID incorrectly looks for the MSDTC transaction. Then, it encounters the 8510 error message when it can no longer locate the transaction by a GUID. It may not be able to locate the transaction because the transaction was aborted or committed successfully.

For this problem to occur, the following conditions must be true:
  • A MSDTC transaction is used.
  • ODBC Connection pooling or similar application connection pooling logic is used.
  • Typically,Generally requires SQL Server to be is running on two or more processors.
  • One SPID must be trying to enlist in a new transaction or must be resetting the connection by using the sp_reset_connection stored procedure.
  • Either the MSDTC transaction must time out or a second SPID must be handling the abort or the commit of the MSDTC transaction.
If error 8510 is seen only in a SQL Profiler trace, it can be ignored.

If error 8510 is logged to the error log, you should follow standard troubleshooting procedures. For additional information, visit the following Microsoft Web site:

Modification Type:MajorLast Reviewed:2/28/2005
Keywords:kbpending kbprb KB307802 kbAudDeveloper