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

Troubleshooting Guide: SQL Server Error 8525 — “Distributed Transaction Completed”

Why This Error Happens

Error 8525 occurs when a SQL Server session attempts to execute a statement after its distributed transaction has already been committed, rolled back, or completed by MSDTC (Microsoft Distributed Transaction Coordinator), leaving the session without a valid active transaction context. This typically happens due to premature calls to COMMIT/ROLLBACK from the client application, a dropped MSDTC connection between nodes, or misconfigured network/firewall rules blocking DTC communication. It can also stem from application code that reuses a connection object after the distributed transaction scope has already exited.

Step-by-Step Resolution Guide

Step 1: Verify MSDTC Service Status and Configuration

  • Open Component Services (dcomcnfg.exe) on both Windows Server 2025 and Windows 11 client machines.
  • Navigate to Component Services > Computers > My Computer > Distributed Transaction Coordinator > Local DTC.
  • Right-click Local DTC > Properties > Security tab, and ensure the following are checked: “Network DTC Access,” “Allow Remote Clients,” “Allow Inbound/Outbound,” and “No Authentication Required” (or Mutual Authentication if domain-joined).
  • Restart the service: net stop msdtc && net start msdtc.

Step 2: Check Firewall and Port Rules

  • Confirm that port 135 (RPC) and the dynamic RPC port range are open between the SQL Server and application server.
  • Run the following PowerShell command to allow MSDTC through Windows Firewall:
  Enable-NetFirewallRule -DisplayGroup "Distributed Transaction Coordinator"
  • Validate connectivity using dtcping.exe or dtctester.exe between the two nodes.

Step 3: Audit Application Transaction Handling Logic

  • Review application code for scenarios where TransactionScope or BEGIN DISTRIBUTED TRANSACTION completes (via Complete() or COMMIT) before all commands finish executing on the same connection.
  • Ensure connection pooling is not returning a connection to the pool mid-transaction.
  • For .NET apps, verify TransactionScope using blocks are not nested incorrectly or disposed early.

Step 4: Update SQL Server Cumulative Updates

  • Check the SQL Server 2025 Configuration Manager to confirm you are running the latest Cumulative Update (CU), as early builds of SQL Server 2025 had known DTC enlistment timing bugs.
  • Download and apply the latest CU from the Microsoft Update Catalog.
  • Restart the SQL Server service after installation: net stop MSSQLSERVER && net start MSSQLSERVER.

Alternative or Verification Steps

  • Run a test distributed transaction manually using BEGIN DISTRIBUTED TRANSACTION in SSMS across two linked servers to confirm the session remains active until COMMIT TRANSACTION is explicitly issued.
  • If the error persists, bypass MSDTC entirely by refactoring the application to use local transactions with manual two-phase commit logic, or switch to Always On Availability Groups with native transaction handling instead of cross-server distributed transactions.