0X80110701

MSDTC_E_DUPLICATE_RESOURCE (0X80110701): Fix for duplicate DTC resource

Database Errors Intermediate 👁 2 views 📅 May 28, 2026

MSDTC_E_DUPLICATE_RESOURCE means Windows found two identical DTC instances. The fix is to clear stale cluster resources or delete a leftover registry key.

Quick answer: Run Get-ClusterResource | Where-Object {$_.ResourceType -eq 'Distributed Transaction Coordinator'} in PowerShell, remove the duplicated DTC resource with Remove-ClusterResource, then create a fresh one.

What's actually happening here?

This error pops up when you're trying to create a Distributed Transaction Coordinator resource in a Windows Server failover cluster, but the cluster already thinks one exists with the same name or GUID. The error code 0X80110701 maps to MSDTC_E_DUPLICATE_RESOURCE. The reason is the cluster database (the quorum) holds a stale entry for a DTC resource that either wasn't fully deleted or was orphaned during a previous failed creation.

I've hit this most often on Windows Server 2016 and 2019 clusters where someone manually created a DTC resource via the Failover Cluster Manager GUI, hit an error halfway, and the half-baked resource stuck around. SQL Server Availability Groups and Exchange Server DAGs are common triggers, because both rely on a dedicated DTC resource for cross-database transactions.

Step-by-step fix

  1. Open PowerShell as Administrator on one of your cluster nodes. Don't bother with the GUI here — it won't show you the hidden duplicate.
  2. Check existing DTC resources:
    Get-ClusterResource | Where-Object {$_.ResourceType -eq 'Distributed Transaction Coordinator'}
    
    Look for the resource that's causing the conflict. You'll likely see two with similar names, or one in a failed state.
  3. Remove the duplicate:
    Remove-ClusterResource -Name "YourDTCResourceName" -Force
    
    The -Force flag is critical — without it, the command can fail if the resource is still partially online.
  4. Verify cleanup:
    Get-ClusterResource | Where-Object {$_.ResourceType -eq 'Distributed Transaction Coordinator'}
    
    You should now see only one DTC resource (or none, if you're starting fresh).
  5. Create the DTC resource again via the GUI or PowerShell. Use a distinct name like DTC-SQLAG-01 so you can spot it later.

Why step 3 works

The cluster database stores each resource with a unique GUID. When you try to create a new DTC resource, the cluster service checks for existing resources of the same type and name. If it finds a match — even a zombie one — it throws this error. Removing the stale resource purges the entry from the cluster database, letting you start clean. The -Force parameter bypasses the resource's online state check, which is necessary because orphaned resources often can't be brought online or offline normally.

If that doesn't fix it — registry cleanup

Sometimes the cluster cleanup doesn't remove everything. The DTC service also stores per-resource configuration in the registry. Here's the nuclear option:

  1. Stop the cluster service on all nodes (this is a planned outage):
    Stop-Service ClusSvc
    
  2. Open Regedit and navigate to:
    HKEY_LOCAL_MACHINE\CLUSTER\Resources
    
    Each subkey here is a GUID. Look for keys where the Type value is Distributed Transaction Coordinator. Export the key first, then delete the offending one.
  3. Also check this path for leftover DTC resource references:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\ClusterResource
    
    Delete any subkeys that match the stale resource name.
  4. Restart the cluster service on all nodes, then recreate the DTC resource.

Alternative: use a different resource name

If the issue is a name collision (not a GUID conflict), you can bypass it entirely by creating the DTC resource with a unique name. This is a hack, not a fix, but it gets you running:

Add-ClusterResource -Name "DTC-New-$(Get-Date -Format 'yyyyMMdd')" -Group "Cluster Group" -ResourceType "Distributed Transaction Coordinator"

This works because the cluster service checks for exact name matches. A different name won't trigger the duplicate check. The downside: you'll have a weirdly named resource forever.

Prevention tip

Whenever you need to remove a DTC resource, always use Remove-ClusterResource with -Force rather than deleting it from the GUI. The GUI sometimes leaves the registry keys behind. Also, after removing it, run Get-ClusterResource | Where-Object {$_.State -eq 'Offline'} and check for any DTC resources that didn't fully disappear. If you find one, remove it immediately.

Was this solution helpful?