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

Troubleshooting Guide: SQL Server Error 3928 — Marked Transaction Failed Due to Log Mark Timeout

Why This Error Happens

Error 3928 occurs when SQL Server cannot commit a marked transaction within the expected timeframe because it is unable to place a mark in the transaction log. This is most commonly caused by lock contention from a long-running or orphaned Microsoft Distributed Transaction Coordinator (MS DTC) transaction, an overloaded or fragmented transaction log file, or network latency between nodes in a distributed transaction scenario. In some cases, insufficient disk I/O throughput on the log drive or a stalled DTC service on Windows Server 2025 can also prevent the log mark from being written in time.

Step-by-Step Resolution Guide

Step 1: Identify Blocking or Orphaned DTC Transactions

  • Run sp_who2 or query sys.dm_tran_active_transactions and sys.dm_tran_database_transactions to locate long-running or uncommitted transactions.
  • Check sys.dm_tran_locks to see if the marked transaction is being blocked by another session.
  • Use the MS DTC console (Component Services > Distributed Transaction Coordinator > Local DTC > Transaction List) to view and, if necessary, manually resolve in-doubt transactions.

Step 2: Restart and Reconfigure the MS DTC Service

  • Open Services.msc on Windows Server 2025 / Windows 11 and restart the Distributed Transaction Coordinator service.
  • Verify DTC network access is enabled: Component Services > My Computer > Properties > MSDTC tab > Security Configuration, ensure “Network DTC Access,” “Allow Inbound,” and “Allow Outbound” are checked.
  • Confirm firewall rules allow DTC traffic (default dynamic RPC port range, or a statically configured port if hardened).

Step 3: Increase Transaction Log Capacity and Performance

  • Check the log file size and autogrowth settings using sys.database_files or SSMS > Database Properties > Files.
  • Ensure the log file is on a dedicated, low-latency disk (SSD/NVMe recommended) separate from data files.
  • Manually grow the log file ahead of time to avoid autogrowth stalls:
  ALTER DATABASE [YourDB] MODIFY FILE (NAME = YourDB_log, SIZE = 5GB);

Step 4: Adjust the Marked Transaction Timeout

  • If the timeout is too aggressive for your workload, increase the wait time using the MARK option timeout in BEGIN TRANSACTION ... WITH MARK calls at the application/script level.
  • Review application code or ETL jobs issuing COMMIT TRAN with marks and add retry logic with exponential backoff.

Step 5: Review SQL Server Error Logs and DTC Logs

  • Open SQL Server Error Log (via SSMS > Management > SQL Server Logs) and cross-reference the timestamp of Error 3928 with any DTC-related warnings.
  • Check Windows Event Viewer > Applications and Services Logs > Microsoft > Windows > MSDTC for correlating errors indicating resource manager timeouts.

Alternative or Verification Steps

  • To verify the fix, re-run the marked transaction during a low-traffic window and confirm it commits without delay by checking sys.dm_tran_database_transactions for a clean commit state.
  • If the issue persists, consider disabling distributed transactions for the specific operation (if business logic allows) by using local transactions only, which bypasses MS DTC coordination entirely.