Why This Error Happens
Error 3979 occurs when the SQL Server Transaction Manager (TM) — responsible for coordinating distributed transactions through MSDTC (Microsoft Distributed Transaction Coordinator) — fails to receive an acknowledgment from a participating resource manager within the expected internal timeout window. This is typically caused by network latency between nodes, a misconfigured or stalled MSDTC service, or blocking/locking contention that prevents the transaction log from flushing the commit record in time. In some cases, a corrupted MSDTC security configuration or outdated firewall rule silently drops the TM handshake packets, causing the request to be abandoned.
Step-by-Step Resolution Guide
Step 1: Verify and Restart the MSDTC Service
- Open Services.msc on Windows Server 2025 / Windows 11.
- Locate Distributed Transaction Coordinator, right-click, and select Restart.
- Alternatively, run in an elevated PowerShell session:
Restart-Service -Name MSDTC -Force
- Confirm the service startup type is set to Automatic to prevent recurrence after reboot.
Step 2: Check Network and Firewall Configuration
- Ensure TCP port 135 (RPC endpoint mapper) and the dynamic RPC port range are open between all nodes involved in the distributed transaction.
- Run
dtcping.exebetween the SQL Server host and the remote TM to confirm two-way communication. - In Windows Defender Firewall with Advanced Security, verify inbound/outbound rules for “Distributed Transaction Coordinator” are enabled on both source and target servers.
Step 3: Review SQL Server Transaction Log and Blocking Sessions
- Run the following query to identify long-running or blocked transactions tied to the TM request:
SELECT session_id, blocking_session_id, wait_type, wait_time, status
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0;
- If a session is holding locks for an extended period, terminate it safely using
KILL <session_id>;after confirming it is not business-critical. - Check the transaction log file size and growth settings in SQL Server Management Studio (SSMS) under Database Properties > Files — ensure Autogrowth is not restrictively capped.
Step 4: Reconfigure MSDTC Security Settings
- Open Component Services (
dcomcnfg.exe) → Computers → My Computer → Distributed Transaction Coordinator → Local DTC → Properties → Security tab. - Enable Network DTC Access, Allow Inbound/Outbound, and Mutual Authentication Required (or Incoming Caller Authentication Required if operating in a mixed-trust environment).
- Apply changes and restart the MSDTC service again to commit the new configuration.
Step 5: Apply Latest SQL Server 2025 Cumulative Update
- Confirm your instance build number via:
SELECT @@VERSION;
- Download and install the latest Cumulative Update (CU) from the Microsoft Update Catalog, as several TM timeout handling fixes are often bundled into servicing updates.
- Reboot the server after installation to ensure the TM driver stack reloads cleanly.
Alternative or Verification Steps
- Re-run the distributed transaction that originally failed and confirm Error 3979 no longer appears in the SQL Server Error Log or Windows Event Viewer (Application log).
- If the issue persists, enable Trace Flag 3904 temporarily to capture verbose TM diagnostic logging, then review
sys.dm_tran_active_transactionsfor transactions stuck in aPREPAREDstate before escalating to Microsoft Support.