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

Why This Error Happens

Error 6121 (“Status report cannot be obtained. Rollback operation for UOW %s is not in progress.”) is raised when SQL Server’s transaction manager receives a status inquiry for a specific Unit of Work (UOW) GUID, but that UOW is not actively executing a rollback at the moment the request is processed. This is not a permissions or network-port error by nature — it is a transaction-state synchronization issue between SQL Server’s Transaction Manager and the Microsoft Distributed Transaction Coordinator (MSDTC). It most commonly surfaces when:

  • A distributed transaction has already completed, timed out, or been resolved (committed/aborted) before the status poll arrived.
  • MSDTC’s transaction log (msdtc.log) is out of sync with SQL Server’s transaction state after an unclean shutdown, failover, or crash.
  • An in-doubt transaction is being queried or killed a second time after it has already been resolved.

The resolution steps below focus on identifying the UOW, confirming MSDTC/transaction health, and clearing any orphaned or already-resolved transaction references.

Step-by-Step Resolution Guide

Step 1: Confirm the Affected Instance and Capture the UOW Identifier

  • Open SQL Server Management Studio (SSMS) and connect to the instance reporting the error (e.g., SQLHOST01\MSSQLSERVER, substituting your actual server\instance name).
  • Open the current error log for the exact message text and UOW GUID. Default path for SQL Server 2025 on Windows Server 2025/Windows 11:
    C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Log\ERRORLOG
  • Alternatively, retrieve it from within SSMS using:
  EXEC sp_readerrorlog 0, 1, 'UOW';
  • Record the UOW GUID shown in the message (e.g., 0D837F94-21DE-4CE3-99AF-57B2FFC6C3F9) — it is required for later verification steps.

Step 2: Verify the Service Account Context

  • Open services.msc and locate SQL Server (MSSQLSERVER) (or the named instance service, e.g., SQL Server (SQL2025)).
  • Confirm the Log On As account matches the account configured in SQL Server Configuration Manager (commonly NT Service\MSSQLSERVER, a virtual/managed service account, or a domain service account).
  • In SQL Server Configuration Manager, confirm the same account is also used consistently for the SQL Server Agent service if distributed jobs are involved, since a mismatch can cause transaction coordination to lose context.

Step 3: Check the Distributed Transaction Coordinator (MSDTC) State

  • Open Component Services: press Win + R, type dcomcnfg, press Enter.
  • Navigate to Component Services > Computers > My Computer > Distributed Transaction Coordinator > Local DTC.
  • Right-click Local DTC and select Properties, then review the Transaction List tab to check for any stalled or in-doubt transactions matching the UOW GUID from Step 1.
  • If MSDTC itself needs to be reset (service appears hung or the transaction log is suspected corrupt), run the following from an elevated Command Prompt:
  net stop msdtc
  msdtc -uninstall
  msdtc -install
  net start msdtc
  • Confirm the service restarted successfully:
  sc query msdtc

Step 4: Review Network and Firewall Configuration for MSDTC

  • MSDTC relies on RPC (port 135) plus dynamically assigned high ports, not a single fixed port. Confirm the predefined firewall rule group is enabled:
  netsh advfirewall firewall set rule group="Distributed Transaction Coordinator" new enable=yes
  • Verify the RPC endpoint mapper port is not blocked:
  netsh advfirewall firewall show rule name=all | findstr "135"
  • If distributed transactions span multiple servers, confirm MSDTC Security Configuration (in Local DTC Properties > Security tab) has Network DTC Access, Allow Inbound/Outbound, and (if required by policy) No Authentication Required or Mutual Authentication Required consistently set on all participating servers.

Step 5: Restart the Affected Services in a Controlled Maintenance Window

  • Schedule a maintenance window, then restart MSDTC followed by the SQL Server service using PowerShell (run as Administrator):
  Restart-Service -Name MSDTC -Force
  Restart-Service -Name 'MSSQLSERVER' -Force
  • For a named instance, replace MSSQLSERVER with the actual service name, e.g., MSSQL$SQL2025.
  • Re-run the distributed transaction or operation that originally produced Error 6121.

Alternative or Verification Steps

  • Verify the fix: Re-execute the operation that triggered Error 6121, then confirm no new matching entries appear in the error log:
  EXEC sp_readerrorlog 0, 1, '6121';
  • Check for in-doubt or orphaned distributed transactions before assuming the issue is resolved:
  SELECT * FROM sys.dm_tran_active_transactions;
  SELECT * FROM sys.dm_tran_database_transactions;
  • Resolve a confirmed in-doubt transaction using the UOW GUID captured in Step 1, if SQL Server reports it as still outstanding:
  KILL '0D837F94-21DE-4CE3-99AF-57B2FFC6C3F9';

(Replace the GUID with the exact UOW value from your error log — do not reuse this example value.)

  • If the error persists after these steps, escalate to your database platform team with the full error log excerpt, the UOW GUID, the MSDTC Transaction List screenshot from Component Services, and the corresponding Windows Event Viewer entries under Applications and Services Logs > Microsoft > Windows > MSDTC.