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

Troubleshooting Guide: SQL Server Error 3019 — Restart-Checkpoint File Inconsistency

Why This Error Happens

Error 3019 occurs when a RESTORE operation using the WITH RESTART option is interrupted, and SQL Server saves a checkpoint file to track progress for resuming the restore later. If the subsequent restart command uses different syntax, file paths, device order, or options (such as a different MOVE clause or a different number of backup files) than the original interrupted command, SQL Server detects the mismatch and refuses to proceed to prevent data corruption. This typically happens due to human error when re-issuing a restore script, or because the checkpoint file itself has become stale or corrupted after a system crash, disk failure, or service interruption on Windows Server 2025/Windows 11.

Step-by-Step Resolution Guide

Step 1: Locate and Inspect the Restart-Checkpoint File

  • The checkpoint file is typically named RESTART.CKP and resides in the SQL Server data directory, e.g., C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Backup\.
  • Open SQL Server Error Log via SSMS or C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Log\ERRORLOG to identify the exact file path referenced in the error message.
  • Confirm the file timestamp matches the time of the original interrupted RESTORE command.

Step 2: Re-Run the Restore Using the Original Exact Syntax

  • Retrieve the original RESTORE script from SSMS query history, a job step, or a deployment pipeline log.
  • Ensure the restore command includes identical FROM DISK = N'...' paths, identical MOVE logical/physical file mappings, and the same WITH RESTART, NORECOVERY or WITH RESTART, RECOVERY options as originally issued.
  • Example:
RESTORE DATABASE [SalesDB]
FROM DISK = N'D:\Backups\SalesDB_Full.bak'
WITH MOVE N'SalesDB' TO N'E:\Data\SalesDB.mdf',
MOVE N'SalesDB_log' TO N'F:\Log\SalesDB_log.ldf',
RESTART, NORECOVERY;

Step 3: Delete the Stale Checkpoint File and Restart Fresh

  • If the original syntax cannot be recovered or the file is corrupted, stop the SQL Server service via services.msc or net stop MSSQLSERVER.
  • Manually delete the RESTART.CKP file from the Backup directory identified in Step 1.
  • Restart the SQL Server service (net start MSSQLSERVER) and re-issue the RESTORE command from the beginning without the RESTART keyword, since no valid checkpoint now exists.

Step 4: Validate Disk and Permissions Integrity

  • Check that the SQL Server service account has full read/write permissions on both the backup source folder and the destination data/log folders.
  • Run chkdsk D: /f (replace with the relevant drive letter) to rule out underlying disk corruption that may have damaged the checkpoint file.

Alternative or Verification Steps

  • Verify success by querying msdb.dbo.restorehistory after completion to confirm the restore sequence completed without further errors, and check sys.databases to confirm the database state is ONLINE or RESTORING as expected.
  • If the issue persists, bypass the checkpoint mechanism entirely by restoring without the RESTART option from the last full/differential/log backup chain — this discards partial progress but guarantees a clean, consistent restore.