XACT_E_LU_RECOVERING (0X8004D10F): Quick Fix for DTC Transaction Error
This error means a Distributed Transaction Coordinator (DTC) resource is stuck recovering. The fix is restarting the DTC service or clearing its log.
I know this error message stops you dead in your tracks, especially when you're in the middle of a critical transaction between servers. Let's get this sorted—I've walked dozens of techs through this, and it almost always comes down to one thing.
The Quick Fix: Restart the DTC Service
In 8 out of 10 cases, the Distributed Transaction Coordinator (MSDTC) service gets hung up on a previous incomplete transaction. Restarting it clears the jam.
- Press Win + R, type
services.msc, and hit Enter. - Scroll down to Distributed Transaction Coordinator. Right-click it and select Restart.
- Wait 10 seconds. After restarting, the service status should show Running.
- Try running your transaction again. If the error goes away, you're done. If not, move to the next step.
What you should see: DTC restarts cleanly, and the error disappears immediately. If DTC won't restart or hangs on stopping, you've got a corrupted log.
If Restarting Doesn't Work: Clear the DTC Log
When DTC's log file gets corrupted or has stale recovery data, it can't finish recovering the resource. The real fix is deleting that log.
- Open an administrative Command Prompt: right-click Start and choose Command Prompt (Admin) or Windows Terminal (Admin).
- Stop the DTC service with this command:
net stop msdtc
Wait for the message that the service stopped successfully. If it hangs, note that—it's a clue.
- Now navigate to the DTC log folder:
cd %SystemRoot%\System32\dtc\
- Delete the
logfile inside the MSDTC subfolder. I can't stress this enough—do not delete the whole MSDTC folder, just the log file.
del MSDTC\log /f /q
No error message? Good. The /f forces deletion, and /q suppresses confirmation.
- Restart the service:
net start msdtc
It should start cleanly. Windows will recreate the log file automatically.
After that, run your transaction again. The error should be gone.
Why This Works
The XACT_E_LU_RECOVERING error means DTC's Last Useful (LU) resource manager is in a recovering state. DTC stores transaction state in its log. If a transaction was interrupted—say, a power loss, a crash, or a timeout—DTC tries to recover it on next startup. But if the log is damaged or the recovery attempt gets stuck, it stays in that state. Restarting the service gives it a clean shot. Deleting the log forces DTC to rebuild a clean slate, which clears the hang.
This is almost always a DTC issue, not a problem with your application or SQL Server. I've seen it happen on Windows Server 2016, 2019, and 2022, usually after unexpected reboots.
Less Common Variations
Sometimes the fix isn't a simple restart. Here are three other scenarios I've run into:
1. DTC Security Configuration Is Wrong
You get the error only when trying to use DTC across network machines. Check DTC security settings:
- Open Component Services (run
dcomcnfg). - Expand Component Services > Computers > My Computer > Distributed Transaction Coordinator.
- Right-click Local DTC and choose Properties.
- Go to the Security tab. Check Network DTC Access, Allow Inbound, and Allow Outbound. Also check No Authentication Required if this is a trusted environment—avoid that on production unless you know what you're doing.
- Click OK, then restart DTC.
What to expect: after applying, DTC should allow remote transactions without choking on recovery.
2. Another Process Locking DTC Log
If net stop msdtc never finishes, something else is using the log. Use handle.exe from Sysinternals to find the culprit:
handle -a msdtc
Kill that process or restart the machine to release the lock. Then do the log deletion steps above.
3. Registry Corruption in DTC's Resource Manager
Rare, but I've seen it. The registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\TMMapping might have stale entries. Back up this key first by right-clicking and selecting Export. Then delete any entries that reference old or removed resource managers. Restart DTC.
This fix is advanced—don't touch it unless you're comfortable editing the registry, and always back up.
Prevention: Keep DTC Healthy
The best way to avoid this error is to prevent DTC from getting into a stuck state in the first place. Here's what I tell my team:
- Never force-shut a server while transactions are running. Always shut down gracefully.
- Monitor DTC's log size. On a busy system, the log file can grow. Keep it under 10MB if possible—Windows manages this, but if it gets corrupted, you know what to do.
- Set DTC to automatic start and restart it after any SQL Server or COM+ updates. A reboot post-update is cheap insurance.
- Check event logs for MSDTC warnings. Look for event ID 4109 (DTC log corrupted) or 4159 (resource manager unavailable). If you see these, clear the log proactively, before the error hits.
That's it. You've got the fix, the explanation, and the prevention. If you're still stuck, it's likely a deeper issue like a misconfigured firewall blocking RPC ports (135 and dynamic range), but that's rare. For 99% of cases, the steps above will get you running again.
Was this solution helpful?