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

Troubleshooting Guide: Error 2598 – DBCC CHECK Cannot Proceed (Database In Recovery)

Why This Error Happens

This error occurs when DBCC CHECKDB or related consistency check commands are executed against a database that is still in the recovery process, meaning SQL Server has not yet rolled forward committed transactions or rolled back incomplete ones from the transaction log. This typically happens after an unexpected server restart, a failover in an Always On Availability Group, or a long-running transaction that extends the recovery phase significantly. Since the database engine locks system metadata during recovery to maintain consistency, any integrity check tool is blocked until the recovery state fully transitions to ONLINE.

Step-by-Step Resolution Guide

Step 1: Verify the Current Database State

  • Open SQL Server Management Studio (SSMS) or Azure Data Studio and connect to the SQL Server 2025 instance.
  • Run the following query to check the database status:
  SELECT name, state_desc FROM sys.databases WHERE name = 'YourDatabaseName';
  • Confirm if the state_desc column shows RECOVERY_PENDING, RECOVERING, or SUSPECT.

Step 2: Monitor the Recovery Progress via Error Logs

  • Navigate to the SQL Server Error Log located at:
    C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Log\ERRORLOG
  • Look for entries containing “Recovery of database… is X% complete” to estimate remaining time.
  • If the log shows no progress for an extended period (stalled), proceed to Step 3; otherwise, wait for the recovery phase to complete naturally.

Step 3: Check for Resource Bottlenecks (Disk I/O or Memory)

  • Open Performance Monitor (PerfMon) on Windows Server 2025 and add the counter SQLServer:Databases -> Log Bytes Flushed/sec and Physical Disk -> Avg. Disk sec/Transfer.
  • High disk latency often stalls the “redo” phase of recovery; verify that the storage subsystem (SAN/NVMe) is not saturated.
  • If the server is low on memory, check Task Manager to ensure the sqlservr.exe process has sufficient RAM allocated and is not causing paging.

Step 4: Force Recovery or Restart the SQL Server Service (If Stalled)

  • If recovery is genuinely stuck (not just slow) due to a corrupted transaction log, open Services.msc, locate SQL Server (MSSQLSERVER), and restart the service to re-attempt automatic recovery.
  • If the database remains in SUSPECT mode after restart, you may need to force it into emergency mode for further diagnostics:
  ALTER DATABASE YourDatabaseName SET EMERGENCY;
  • Caution: Only use Emergency Mode as a last resort, as it bypasses standard recovery logic for read-only access.

Step 5: Run DBCC CHECKDB Post-Recovery

  • Once the state_desc changes to ONLINE, immediately re-run the integrity check:
  DBCC CHECKDB ('YourDatabaseName') WITH NO_INFOMSGS, ALL_ERRORMSGS;
  • Review the output for any underlying corruption that might have caused the initial crash leading to the extended recovery.

Alternative or Verification Steps

  • Verification: Re-query sys.databases to ensure state_desc reads ONLINE and successfully execute DBCC CHECKDB without the 2598 error reappearing.
  • Alternative: If the database is stuck in RECOVERY_PENDING indefinitely due to missing log files, you may need to restore the database from the last known good backup using RESTORE DATABASE ... WITH RECOVERY rather than waiting for the engine to self-heal.