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

Troubleshooting Guide: SQL Server Error 3060 – Restart-Checkpoint File Corruption

Why This Error Happens

Error 3060 occurs when SQL Server performs a RESTORE operation using the WITH RESTART option, and the restart-checkpoint file it relies on to resume the sequence has become corrupted or truncated. This typically happens due to an unexpected interruption during the backup/restore process, such as a disk I/O failure, a network drop during a restore from a remote share, or insufficient disk space causing the checkpoint file to be written incompletely. Since the checkpoint file no longer accurately reflects the state of the restore sequence, SQL Server cannot safely resume and recover the database from that point.

Step-by-Step Resolution Guide

Step 1: Verify Disk Space and I/O Health

  • Check the drive hosting the restart-checkpoint file (usually in the default backup directory or a custom path specified in the RESTORE statement) for available free space.
  • Run Get-PSDrive in PowerShell on Windows Server 2025 to confirm the target volume isn’t near capacity.
  • Review Windows Event Viewer under Windows Logs > System for Disk or NTFS warning/error events that coincide with the restore timestamp.

Step 2: Discard the Corrupted Checkpoint and Restart the Full Restore Sequence

  • Since the checkpoint file is unusable, you cannot resume; you must restart the entire RESTORE sequence from the full backup.
  • Delete or rename the corrupted checkpoint file (commonly named with a .ckp extension) from its directory, e.g., C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Backup\.
  • Re-run the full restore chain starting with RESTORE DATABASE [YourDB] FROM DISK = 'FullBackup.bak' WITH NORECOVERY, followed by any differential/log backups.

Step 3: Remove the WITH RESTART Clause for a Clean Restore

  • If the restore sequence is short enough to complete in one session, omit WITH RESTART entirely to avoid checkpoint file dependency.
  • Use RESTORE DATABASE [YourDB] FROM DISK = 'FullBackup.bak' WITH RECOVERY only after all differential and log files have been applied in sequence.

Step 4: Validate Backup Media Integrity

  • Run RESTORE VERIFYONLY FROM DISK = 'FullBackup.bak' to confirm the backup file itself is not corrupted before attempting restore again.
  • If verification fails, pull a backup copy from a secondary storage location or offsite repository (Azure Blob, tape, or NAS snapshot).

Step 5: Check Permissions on the Backup/Checkpoint Directory

  • Confirm the SQL Server service account has full Read/Write/Modify permissions on the backup directory via Properties > Security in File Explorer, or icacls "C:\Backup Path" /grant "NT SERVICE\MSSQLSERVER":(OI)(CI)F.
  • Insufficient permissions can prevent the checkpoint file from being written correctly, leading to repeated corruption.

Alternative or Verification Steps

  • After restarting the restore sequence, confirm success by querying SELECT state_desc FROM sys.databases WHERE name = 'YourDB'; — it should return ONLINE once recovery completes.
  • If corruption persists across attempts, move the backup files to local SSD storage (avoiding network shares) and retry, as network latency/disruption is a common root cause of checkpoint file corruption.