XACT_E_LU_RECOVERY_MISMATCH (0X8004D110) Fix
MSDTC recovery mismatch error. Usually happens after a cluster failover or a service restart. Fix it in 3 steps.
Simplest Fix: Restart the MSDTC Service (30 seconds)
This clears the in-memory recovery state. Nine times out of ten, that's all you need.
- Open an admin Command Prompt or PowerShell.
- Run:
net stop msdtc && net start msdtc - Test your transaction again.
If you're on a cluster, do this on every node that hosts the MSDTC resource. Don't bother restarting the whole server — that's overkill and wastes everyone's time.
Still broken? Move to the moderate fix.
Moderate Fix: Reset MSDTC Log and Cluster Resource (5 minutes)
When the log file itself is corrupt or has a stale recovery record, restarting won't cut it. Here's the real fix:
- On each cluster node, stop MSDTC:
net stop msdtc - Delete the log file. Path:
Just delete it — MSDTC recreates it on startup. Make sure you're not deleting the folder, only the .log file.C:\Windows\System32\MSDTC\msdtc.log - On the active cluster node, start MSDTC:
net start msdtc - Then bring the MSDTC cluster resource online in Failover Cluster Manager. Right-click it -> Bring Online.
If that fails to come online, you've got a deeper issue — move to the advanced fix.
Advanced Fix: Cluster Resource Metadata Cleanup (15+ minutes)
This is for when the cluster resource itself has cached a bad recovery state. I've seen this happen after a node was forcefully removed from a cluster and then added back.
- Open Failover Cluster Manager.
- Navigate to your MSDTC resource. Right-click it -> Properties.
- Go to the Advanced Policies tab. Set Possible Owners to only the single node that's currently online.
- Take the resource offline:
Stop-ClusterResource "Your MSDTC Resource Name" -Force - Clear the private properties that point to the old recovery log:
Get-ClusterResource "Your MSDTC Resource Name" | Clear-ClusterParameter LogPath - Bring it back online:
Start-ClusterResource "Your MSDTC Resource Name" - If it works, add the other nodes back as possible owners.
Still failing? You might need to delete and recreate the MSDTC resource entirely.
Warning: This will drop all in-flight distributed transactions. Make sure the application is stopped first.
Technical background: The XACT_E_LU_RECOVERY_MISMATCH error means MSDTC's local recovery log says "I was coordinating transactions with this LU (logical unit)", but the actual LU partner (like SQL Server) doesn't match. This mismatch is a classic symptom of a cluster failover where the log wasn't properly migrated, or the MSDTC instance was started on a node that had a stale copy of the log.
Common scenario: SQL Server Availability Group listener moves, MSDTC resource follows, but the log on the new node is from an older restart. Deletion + restart fixes it.
One more thing — check Windows Event Log under Applications and Services Logs > Microsoft > Windows > MSDTC. If you see Event ID 4159, that confirms the mismatch. If you see Event ID 4097, you've got a corrupted log — go straight to the moderate fix and skip the simple restart.
Was this solution helpful?