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

Troubleshooting Guide: Error 3921 in Microsoft SQL Server 2025

Why This Error Happens

Error 3921 occurs when SQL Server attempts to retrieve a transaction token (used for tracking distributed or marked transactions) but no active transaction context exists at that point in execution. This typically happens when a stored procedure, trigger, or application code calls GET TRANSACTION TOKEN or similar transaction-dependent functions outside of an explicit BEGIN TRANSACTION block. It can also surface when autocommit mode silently closes a transaction before a dependent statement executes, often due to an earlier COMMIT, ROLLBACK, or connection-level session setting change.

Step-by-Step Resolution Guide

Step 1: Review the Transaction Scope in Your Code

  • Open the stored procedure, script, or application code that triggered the error.
  • Confirm whether a BEGIN TRANSACTION statement precedes the call to GET TRANSACTION TOKEN or any marked transaction logic.
  • Check for premature COMMIT TRANSACTION or ROLLBACK TRANSACTION statements that may close the transaction too early.

Step 2: Explicitly Start a Transaction Before the Statement

  • Insert BEGIN TRANSACTION [TransactionName] WITH MARK 'description'; immediately before the failing statement.
  • Ensure the transaction name matches what downstream replication or log-reader processes expect (common with transactional replication or Change Data Capture setups).
  • Example:
  BEGIN TRANSACTION MyMarkedTran WITH MARK 'Insert Batch Job';
  GET TRANSACTION TOKEN = @TranToken;

Step 3: Verify Connection and Session Settings

  • Check if IMPLICIT_TRANSACTIONS is set to OFF on the session, which can cause statements to auto-commit unexpectedly.
  • Run the following to inspect current session settings:
  DBCC USEROPTIONS;
  • In Windows Server 2025 / Windows 11 environments, confirm the application’s connection string (ODBC, OLE DB, or SqlClient) isn’t overriding transaction isolation or autocommit behavior.

Step 4: Check for Distributed Transaction Coordinator (MSDTC) Issues

  • Open Component Services (dcomcnfg.exe) on the Windows Server 2025 host.
  • Navigate to Component Services > Computers > My Computer > Distributed Transaction Coordinator.
  • Confirm the MSDTC service is running and properly configured for network access if the transaction spans linked servers.
  • Restart the service if needed:
  Restart-Service MSDTC -Force

Step 5: Audit Replication or CDC Jobs (If Applicable)

  • If the error originates from a replication agent or Change Data Capture job, open SQL Server Management Studio (SSMS) and inspect the Log Reader Agent job history.
  • Verify the agent job isn’t attempting to mark a transaction after the parent transaction has already committed.
  • Reschedule or reissue the job after confirming the transaction block wraps the entire batch.

Alternative or Verification Steps

  • To verify the fix, re-run the original script or stored procedure and confirm no Error 3921 appears in the SQL Server Error Log (Management > SQL Server Logs in SSMS).
  • As an alternative, wrap the entire operation in a TRY...CATCH block with explicit BEGIN TRAN / COMMIT TRAN pairs to ensure the transaction token is always requested within an active transaction context.