Troubleshooting Guide: Error 3450 in Microsoft SQL Server 2025
Why This Error Happens
Error 3450 is an informational message generated by the SQL Server Database Engine during the crash recovery process, which runs automatically when a database starts after an unexpected shutdown, failover, or restore operation. This message simply reports the progress of the REDO/UNDO phases of recovery and does not indicate a failure by itself; however, prolonged or stalled recovery phases are often a symptom of underlying issues such as slow disk I/O, insufficient memory, a large number of uncommitted transactions in the log (VLFs), or corruption in the transaction log that is forcing an extended rollback. If the percentage complete stalls or the “seconds remain” value increases indefinitely, it usually points to hardware bottlenecks or log file corruption rather than normal recovery behavior.
Step-by-Step Resolution Guide
Step 1: Monitor the Actual Recovery Progress
- Do not restart the SQL Server service, as this will force recovery to start over from the beginning, wasting the progress already made.
- Query the DMV to check real-time status:
SELECT * FROM sys.dm_exec_requests WHERE command = 'DB STARTUP'; - Check the
percent_completeandestimated_completion_timecolumns to confirm if progress is actually moving.
Step 2: Check Disk I/O and Hardware Health
- Open Performance Monitor (Perfmon) on Windows Server 2025 and add the counter
PhysicalDisk > Avg. Disk sec/ReadandAvg. Disk sec/Write. - Values consistently above 20ms indicate a storage bottleneck that is slowing down the REDO phase.
- Verify the drive hosting the
.ldf(log) file is not running out of space via File Explorer orGet-PSDrivein PowerShell. - If using virtualized storage (Hyper-V/Azure), check the host-level storage queue depth for throttling.
Step 3: Allocate Sufficient Memory and Tempdb Resources
- Navigate to SQL Server Management Studio (SSMS) > Right-click Server > Properties > Memory.
- Ensure “Maximum server memory” is not capped too low, as insufficient buffer pool memory slows down the REDO/UNDO phase significantly.
- Verify Tempdb files (located typically at
C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\DATA) have adequate free space, as Phase 3 (Undo) often requires Tempdb for rollback operations.
Step 4: Inspect for Transaction Log Corruption
- If recovery stalls specifically during “Phase 2” (Redo) or “Phase 3” (Undo) without progressing, check the SQL Server Error Log for accompanying I/O error messages (e.g., Error 823 or 824).
- Navigate to the Log folder:
C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Log\ERRORLOG. - If corruption is confirmed and no backup is viable, you may need to force the database into emergency mode for data retrieval:
ALTER DATABASE [YourDB] SET EMERGENCY;
Step 5: Optimize Virtual Log File (VLF) Count for Future Prevention
- Once the database is back online, check the VLF count to prevent future long recovery times:
DBCC LOGINFO; - If the count is excessive (>1000), shrink and regrow the log file in controlled increments to optimize the VLF size:
DBCC SHRINKFILE (YourDB_log, 1);
Alternative or Verification Steps
- Verification: Once the message disappears from the SQL Server Error Log and the database status in
sys.databasesshowsstate_desc = 'ONLINE', the recovery process has successfully completed. - Alternative: If recovery hangs indefinitely (stuck at a specific percentage for hours) due to severe corruption, restore the database from the last known good full backup and transaction log backups rather than waiting for the UNDO phase to complete.