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.CKPand 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\ERRORLOGto 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, identicalMOVElogical/physical file mappings, and the sameWITH RESTART, NORECOVERYorWITH RESTART, RECOVERYoptions 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.mscornet stop MSSQLSERVER. - Manually delete the
RESTART.CKPfile 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 theRESTARTkeyword, 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.restorehistoryafter completion to confirm the restore sequence completed without further errors, and checksys.databasesto confirm the database state isONLINEorRESTORINGas expected. - If the issue persists, bypass the checkpoint mechanism entirely by restoring without the
RESTARToption from the last full/differential/log backup chain — this discards partial progress but guarantees a clean, consistent restore.