PRB: Errors 3437, 3414, and "Could Not Connect to DTC" Occur When You Start SQL Server (306366)



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions)
  • Microsoft SQL Server 7.0

This article was previously published under Q306366

SYMPTOMS

When you start the MSSQLSERVER service, you may receive the errors 3437 and 3414:
Error 3437: Error recovering database '%.*ls'. Could not connect to MSDTC to check the completion status of transaction %S_XID.
Error 3414: Database '%.*ls' (database ID %d) could not recover. Contact Technical Support for further instructions.
Additionally, you may receive a message that states that one or more databases are marked suspect:
"Could not connect to the DTC to check completion status of xact: Rid pageid is 0xeb8a and row num is 0x15"
In the current SQL Server error log, you see messages that are similar to the following messages:
Recovery dbid 7 ckpt (59952,20) oldest tran=(60298,21) Error : 3437, Severity: 21, State: 3 Error recovering database 'database1' - could not connect to the DTC to check completion status of xact: Rid pageid is 0xeb8a and row num is 0x15
Error : 3414, Severity: 21, State: 1 Database 'database1' (dbid 7): Recovery failed. Please contact Technical Support for further instructions.
The SQL Server error log may contain "Unit of Work" (UOW) messages that are similar to the following messages.

NOTE: You see these messages approximately once per minute until the problem is resolved.
Awaiting DTC message. UOW:e3c4fd53-efe1-11d1-9840-0004acfddd1a State: PREPARED

-or-

Resource Manager Creation Failed: XACT_E_TMNOTAVAILABLE

CAUSE

Microsoft Distributed Transaction Coordinator (MS DTC) is a transaction manager that permits client applications, such as Microsoft Transaction Server (MTS), to include several different sources of data in one transaction. MS DTC coordinates committing the distributed transaction across all the servers that are enlisted in the transaction.

When you are using MS DTC to manage a distributed transaction across multiple servers and a loss of connectivity occurs, the distributed transaction is left in an unknown state. Common causes of this unknown or "in doubt" state are
  • Network errors.
  • Stopping MSSQLSERVER or MS DTC.
  • Stopping other involved services.
on one or more computers that are involved in the distributed transaction. After the connection is disrupted, MS DTC leaves all the transactions in progress at that stage in an inconsistent state. The "in doubt" transactions cause these symptoms because SQL Server cannot determine whether to commit or to roll back the transactions, and SQL Server needs MS DTC to tell it how to proceed.

RESOLUTION

There are several different methods that you can use to resolve the inconsistent distributed transactions:
  • You can use the method that is described in the SQL Server Books Online topic "Troubleshooting MS DTC Transactions."
  • If you stop MS DTC on one or more of the servers that are involved in the distributed transaction (or transactions), you might resolve the problem when you restart MS DTC.
  • Frequently, you can use the MS DTC administrative console:

    Windows 2000

    1. Type mmc.exe in the Run dialog box to open Microsoft Management Console (MMC).
    2. In MMC, on the Console menu, click Add/Remove Snap-in.
    3. In the Add/Remove Snap-in dialog box, click Add.
    4. In the Add Standalone Snap-in dialog box, click Component Services, and then click Add to add the snap-in.
    5. Click Close.
    6. In the Add/Remove Snap-in dialog box, click OK.
    7. In the console root under Component Services, expand Component Services, point to Computers, point to My Computer, and then click Distributed Transaction Coordinator.
    8. Select Transaction List. You see transactions in the details pane. Right-click the transaction, and then click Resolve. You now have three options: Commit, Abort, or Forget. Use the one is appropriate for your situation.

    Windows NT

    1. Click Start, click Run, type dac.exe, and then press enter. The MS DTC Administrative Console opens.
    2. On the Transactions tab, right-click the transaction, and then click Resolve. You now have three options: Commit, Abort, or Forget. Use the one is appropriate for your situation.

MORE INFORMATION

For similar issues in Microsoft SQL Server 6.5, click the article number below to view the article in the Microsoft Knowledge Base:

195542 FIX: Losing DTC Service May Leave Orphaned Transactions


Modification Type:MajorLast Reviewed:10/17/2003
Keywords:kbprb KB306366