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

Troubleshooting Guide: Error 4335 – “The Specified STOPAT Time Is Too Early”

Why This Error Happens

This error occurs when performing a point-in-time restore (RESTORE DATABASE … WITH STOPAT) and the specified timestamp predates the earliest available transaction in the backup chain being applied. SQL Server 2025 tracks the LSN (Log Sequence Number) chain during restore operations, and if the STOPAT value falls before the first transaction recorded in the current differential or transaction log backup file, the engine cannot roll the database forward to that point. This typically happens due to incorrect time zone assumptions, a misunderstanding of backup sequence order, or attempting to apply a log backup that starts later than the requested recovery point.

Step-by-Step Resolution Guide

Step 1: Verify the Exact Timestamp of Your Backup Chain

  • Run the following query against the msdb database to inspect backup history:
  SELECT backup_start_date, backup_finish_date, database_name, type 
  FROM msdb.dbo.backupset 
  WHERE database_name = 'YourDatabaseName' 
  ORDER BY backup_start_date;
  • Confirm whether your target STOPAT time falls within the range of backup_start_date and backup_finish_date for the relevant differential or log backup.
  • Check for time zone mismatches between your restore script and the SQL Server instance (SQL Server uses server local time, not UTC, by default).

Step 2: Identify the Correct Full or Differential Base Backup

  • Ensure you are restoring from the full backup (or differential) that was taken before your desired STOPAT time, not after it.
  • Use RESTORE HEADERONLY FROM DISK = 'C:\Backups\YourDB.bak' to inspect the backup set metadata and confirm BackupStartDate and BackupFinishDate values.
  • If using Windows Server 2025 storage paths, confirm the backup file sequence in C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Backup\ matches the chronological order expected by your restore script.

Step 3: Adjust the STOPAT Value to a Valid Window

  • Modify your restore command to use a timestamp that falls strictly within the available log backup range:
  RESTORE DATABASE YourDatabaseName
  FROM DISK = 'C:\Backups\YourDB_Full.bak'
  WITH NORECOVERY;

  RESTORE LOG YourDatabaseName
  FROM DISK = 'C:\Backups\YourDB_Log1.trn'
  WITH STOPAT = '2025-01-15T14:30:00', RECOVERY;
  • If the exact time is unknown, use STOPATMARK or STOPBEFOREMARK with a named transaction mark instead of a hardcoded timestamp for greater precision.

Step 4: Rebuild the Restore Sequence If Chain Is Broken

  • If no valid backup file contains the desired STOPAT window, you must restore an earlier full backup and reapply subsequent differential/log backups in the correct order with WITH NORECOVERY until reaching the correct log file.
  • Delete and restart the restore sequence entirely if intermediate NORECOVERY states were committed incorrectly, as partial recovery chains cannot be reversed.

Alternative or Verification Steps

  • After a successful restore, run SELECT DATABASEPROPERTYEX('YourDatabaseName', 'Status') to confirm the database is now ONLINE and query recent table data to verify the recovery point is accurate.
  • If STOPAT continues to fail, consider using RESTORE LOG ... WITH STANDBY mode to incrementally apply logs and manually inspect data state between each log restore until the correct point is isolated.