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

Troubleshooting Guide: Error 3952 – Snapshot Isolation Not Allowed

Why This Error Happens

This error occurs because the ALLOW_SNAPSHOT_ISOLATION database option is set to OFF at the database level, which is the default configuration for most databases in SQL Server 2025. When a transaction explicitly requests the SNAPSHOT isolation level, SQL Server checks this database-level flag before allowing the transaction to proceed, and rejects it if the flag has not been enabled. This is not a permissions or connectivity issue, but rather a missing configuration setting that must be explicitly turned on by a database administrator.

Step-by-Step Resolution Guide

Step 1: Verify the Current Database Setting

  • Open SQL Server Management Studio (SSMS) or Azure Data Studio and connect to your SQL Server 2025 instance.
  • Run the following query to check the current state of the flag:
  SELECT name, snapshot_isolation_state_desc 
  FROM sys.databases 
  WHERE name = 'YourDatabaseName';
  • If the result shows OFF, this confirms the root cause of Error 3952.

Step 2: Enable Snapshot Isolation via ALTER DATABASE

  • Ensure no active transactions are blocking the schema change (this command requires a brief lock).
  • Execute the following T-SQL command, replacing YourDatabaseName with your target database:
  ALTER DATABASE YourDatabaseName 
  SET ALLOW_SNAPSHOT_ISOLATION ON;
  • Note: Unlike READ_COMMITTED_SNAPSHOT, this specific option does not require exclusive database access and can typically be run while users are connected.

Step 3: Update Application Connection Logic

  • Open your application’s data access layer or stored procedure code.
  • Ensure the transaction logic explicitly sets the isolation level before executing queries:
  SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
  BEGIN TRANSACTION;
  -- Your SELECT/INSERT/UPDATE logic here
  COMMIT TRANSACTION;
  • Save and redeploy the application or restart the specific service consuming the database connection.

Step 4: Restart Dependent Services (If Applicable)

  • If running on Windows Server 2025, open Services.msc.
  • Restart the SQL Server (MSSQLSERVER) service or the specific named instance service to clear any cached connection pooling states that might still be rejecting the old isolation level.
  • Re-run the failing application transaction to confirm the error is cleared.

Alternative or Verification Steps

  • Verification: Re-run the sys.databases query from Step 1; the snapshot_isolation_state_desc column should now return ON.
  • Alternative Fix: If application code cannot be modified to use SNAPSHOT explicitly, consider enabling READ_COMMITTED_SNAPSHOT instead (ALTER DATABASE YourDatabaseName SET READ_COMMITTED_SNAPSHOT ON;), which applies row-versioning automatically to the default READ COMMITTED isolation level without requiring code changes, though this requires exclusive database access to execute.