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

Troubleshooting Guide: Error 3929 – No Distributed or Bound Transaction Allowed in Single User Database

Why This Error Happens

This error occurs when SQL Server 2025 is placed in single-user mode (SINGLE_USER) while a distributed transaction, a bound session, or an application using MS DTC attempts to enroll that connection in a larger transaction scope. Single-user mode restricts the database to one connection at a time for maintenance purposes, which is architecturally incompatible with the multi-session coordination that distributed or bound transactions require. This typically surfaces during restore operations, database repair (DBCC CHECKDB with repair options), or when ORM frameworks (like Entity Framework) wrap connections in TransactionScope without disabling distributed transaction promotion.

Step-by-Step Resolution Guide

Step 1: Identify the Transaction Context Triggering the Error

  • Check the application connection string or code for TransactionScope usage, especially in .NET applications.
  • Run SELECT * FROM sys.dm_tran_active_transactions; in SQL Server Management Studio (SSMS) to see if a distributed transaction is active.
  • Confirm whether MS DTC (Distributed Transaction Coordinator) service is running via services.msc on Windows Server 2025 or Windows 11.

Step 2: Disable Distributed Transaction Enlistment in the Application

  • If using .NET, replace TransactionScope with TransactionScope(TransactionScopeOption.Suppress) for operations hitting the single-user database.
  • For connection strings, ensure Enlist=false; is explicitly set to prevent automatic enlistment:
  Server=myServer;Database=myDB;Enlist=false;
  • If using linked servers, verify sp_configure 'remote proc trans' is not forcing distributed transaction promotion unnecessarily.

Step 3: Take the Database Out of Single-User Mode Before Running Transactional Operations

  • Open a new query window in SSMS and run:
  ALTER DATABASE [YourDatabaseName] SET MULTI_USER;
  • If the database must remain in single-user mode for maintenance (e.g., DBCC CHECKDB repairs), ensure only local, non-distributed transactions are issued against it.
  • Avoid running repair scripts through tools or ORMs that implicitly wrap commands in TransactionScope — use raw ADO.NET or SSMS native queries instead.

Step 4: Restart MS DTC Service to Clear Stale Transaction States

  • Open Command Prompt as Administrator on Windows Server 2025 / Windows 11.
  • Run the following to restart the service cleanly:
  net stop msdtc
  net start msdtc
  • Verify DTC security settings via Component Services > Computer > My Computer > Distributed Transaction Coordinator and ensure “Network DTC Access” is configured correctly if cross-server transactions are involved.

Step 5: Re-run the Operation in Single-User Mode Without Transaction Promotion

  • Reconnect using a dedicated admin connection (DAC): sqlcmd -S myServer -A
  • Execute the required maintenance or repair command directly without wrapping it in any explicit or implicit transaction scope.
  • Once complete, switch the database back: ALTER DATABASE [YourDatabaseName] SET MULTI_USER;

Alternative or Verification Steps

  • Verify the fix: After switching back to MULTI_USER mode, run the original application transaction again and confirm no Error 3929 appears in the SQL Server Error Log (Management > SQL Server Logs in SSMS).
  • Alternative approach: If the application cannot avoid distributed transactions, perform all single-user maintenance tasks via a separate isolated script (PowerShell or sqlcmd) rather than through the main application pipeline, ensuring no TransactionScope or MSDTC enlistment occurs during the maintenance window.