How to fix Error 3429 on Windows Server 2025 / Windows 11

Troubleshooting Guide: Error 3429 – Cross-Database Transaction Recovery Failure

Why This Error Happens

Error 3429 occurs when SQL Server’s recovery process cannot resolve the final state (commit or rollback) of a distributed or cross-database transaction, typically because the Microsoft Distributed Transaction Coordinator (MS DTC) service was unavailable or unreachable during the recovery phase. This often happens after an unexpected shutdown, a failed cluster failover, or when the MSDTC log and the SQL Server transaction log fall out of sync due to corruption or a mismatched restart sequence. In some cases, this is also triggered by inconsistent service startup order, where SQL Server starts recovery before MSDTC is fully initialized on Windows Server 2025 or Windows 11.

Step-by-Step Resolution Guide

Step 1: Verify and Restart the MSDTC Service

  • Open Services.msc on the affected Windows Server 2025 / Windows 11 machine.
  • Locate Distributed Transaction Coordinator, confirm it is set to Automatic, and restart it.
  • Alternatively, run the following in an elevated Command Prompt:
net stop msdtc
net start msdtc

Step 2: Check and Repair MSDTC Log Consistency

  • Navigate to C:\Windows\System32\MSDTC\MSDTC.LOG and confirm the file is not corrupted or zero-byte.
  • If corrupted, reconfigure MSDTC logging via:
msdtc -uninstall
msdtc -install
  • Ensure the MSDTC log path has sufficient disk space and correct NTFS permissions for the NT AUTHORITY\NetworkService account.

Step 3: Correct Service Startup Dependencies

  • Open Registry Editor and navigate to:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLSERVER
  • Add MSDTC as a dependency so SQL Server waits for it to fully start before beginning recovery.
  • Restart the SQL Server (MSSQLSERVER) service and monitor the SQL Server Error Log for recovery completion messages.

Step 4: Force Resolution of the Orphaned Transaction

  • If the transaction remains unresolved after service restarts, use:
SELECT * FROM sys.dm_tran_database_transactions;
  • Identify the orphaned XID and manually resolve it using:
KILL '<transaction_UOW>';
  • If KILL fails, use sp_resetstatus on the affected database as a last resort (only after a full backup).

Alternative or Verification Steps

  • Re-run the SQL Server startup and check the Error Log for the message “Recovery is complete” with no further 3429 entries.
  • If the issue persists, restore the affected database from the last known good backup and replay transaction logs to bypass the corrupted distributed transaction state.