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

Why This Error Happens

Error 6111 (“Another user has decided a different outcome for the distributed transaction associated with UOW %s”) occurs when two or more participants in a distributed transaction reach conflicting commit or rollback decisions for the same unit of work (UOW). In SQL Server 2025 running on Windows Server 2025 or Windows 11, this disagreement is typically caused by network interruptions, firewall or RPC port restrictions, or Distributed Transaction Coordinator (MSDTC) permission and configuration mismatches that prevent participants from reliably communicating the transaction outcome to one another.

Step-by-Step Resolution Guide

Step 1: Confirm the MSDTC Service Is Running

  • Open the Services console (services.msc) and locate Distributed Transaction Coordinator.
  • Verify its status is Running and its startup type is set to Automatic.
  • To check and correct this from an elevated Command Prompt or PowerShell session, run:
  sc query msdtc
  sc config msdtc start= auto
  net start msdtc

Step 2: Verify MSDTC Network Access Settings

  • Open the Component Services console by running dcomcnfg (or comexp.msc) from an elevated prompt.
  • Navigate to Component Services > Computers > My Computer > Distributed Transaction Coordinator > Local DTC, then right-click and choose Properties.
  • On the Security tab, confirm that Network DTC Access, Allow Remote Clients, and Allow Inbound/Outbound Transactions are enabled to match the requirements of your environment on both the SQL Server host and the remote participant.
  • Click OK and allow the service to restart when prompted (this triggers an automatic net stop msdtc / net start msdtc cycle).

Step 3: Check the Firewall and RPC Port Configuration

  • Confirm that Windows Firewall (or any third-party firewall) on all participating servers allows MSDTC traffic and the RPC endpoint mapper (TCP port 135). On each server, run:
  netsh advfirewall firewall set rule group="Distributed Transaction Coordinator" new enable=yes
  • If a restricted dynamic RPC port range is configured for MSDTC, verify it in the registry at:
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet

(keys Ports, PortsInternetAvailable, and UseInternetPorts), and ensure the configured range is open on the firewall between all participating servers.

  • Confirm basic connectivity on port 135 between servers using PowerShell:
  Test-NetConnection -ComputerName <RemoteServerName> -Port 135

Step 4: Validate Permissions and Review the DTC Logs

  • Confirm the SQL Server service account and the MSDTC service account have the required local (part of the local Administrators or Distributed COM Users group, as appropriate) and network permissions on all participating servers.
  • Open Event Viewer (eventvwr.msc) and review the Windows Logs > Application and Windows Logs > System logs on each server for entries with source MSDTC or MSDTC2, noting any timestamps that align with the Error 6111 occurrence.

Step 5: Reset the MSDTC Log If Corruption Is Suspected

  • From an elevated Command Prompt, stop the service, reset the internal MSDTC transaction log, and restart it:
  net stop msdtc
  msdtc -resetlog
  net start msdtc
  • Restart the SQL Server service and retry the distributed transaction.

Alternative or Verification Steps

  • Verify the fix: Re-run the original distributed transaction (for example, a linked server query or a BEGIN DISTRIBUTED TRANSACTION statement) and confirm it completes without Error 6111. Then check the SQL Server error log and Event Viewer on all participating servers for new MSDTC warnings.
  • Alternative if the primary steps fail: Use Test-NetConnection against the RPC endpoint mapper port (135) and any configured dynamic RPC range between every participating server to isolate network-layer blocking. If connectivity tests pass but the error persists, reinitialize the MSDTC configuration entirely with:
  net stop msdtc
  msdtc -uninstall
  msdtc -install
  net start msdtc

and reapply the Security tab settings from Step 2. If the issue still cannot be resolved, consider redesigning the operation to avoid cross-server distributed commits, such as using a linked server configured for read-only queries or an application-level retry/compensation pattern instead of a two-phase commit.