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

Troubleshooting Guide: SQL Server Error 3403 – “Recovering only master database because traceflag 3608 was specified”

Why This Error Happens

This message appears when SQL Server 2025 is started with trace flag 3608 enabled, either manually via startup parameters or inherited from a previous troubleshooting session. Trace flag 3608 deliberately instructs the SQL Server Database Engine to skip the automatic recovery process for all user databases, recovering only the master database to speed up startup. While this is an informational message and not a true error, it often causes confusion when administrators notice that user databases remain in a “Recovery Pending” or inaccessible state after the service starts, mistaking normal behavior for database corruption.

Step-by-Step Resolution Guide

Step 1: Verify the Intent Behind the Trace Flag

  • Confirm whether trace flag 3608 was intentionally added for maintenance tasks (such as moving tempdb or performing manual recovery).
  • Check the SQL Server Error Log located at C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Log\ERRORLOG for the exact startup parameters used.
  • Look for the line referencing -T3608 in the startup sequence to validate its presence.

Step 2: Remove the Trace Flag from Startup Parameters

  • Open SQL Server Configuration Manager on Windows Server 2025 or Windows 11.
  • Navigate to SQL Server Services > right-click SQL Server (MSSQLSERVER) > select Properties.
  • Go to the Startup Parameters tab and locate the entry -T3608.
  • Select the flag and click Remove, then click Apply.

Step 3: Restart the SQL Server Service

  • Restart the service via Configuration Manager or run the following in an elevated PowerShell terminal:
  • Restart-Service -Name 'MSSQLSERVER' -Force
  • Monitor the ERRORLOG file in real-time to ensure databases proceed through the standard recovery phases (Analysis, Redo, Undo).

Step 4: Manually Bring User Databases Online

  • If databases remain in a “Recovery Pending” state after removing the flag, execute the following T-SQL command for each affected database:
  • ALTER DATABASE [YourDatabaseName] SET ONLINE;
  • Review sys.databases to check the state_desc column for confirmation of status changes.

Alternative or Verification Steps

  • Run SELECT name, state_desc FROM sys.databases; in SSMS to confirm all user databases show a state_desc of ONLINE rather than RECOVERY_PENDING.
  • If the trace flag was required for a specific administrative task (e.g., tempdb relocation), ensure it is used only temporarily via DBCC TRACEOFF (3608, -1) immediately after the task is complete, rather than leaving it as a persistent startup parameter.