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

Troubleshooting Guide: Error 3105 — RESTORE Cannot Restore Any More Pages

Why This Error Happens

This error occurs when SQL Server’s internal page-tracking buffer for a page-level restore sequence reaches its maximum capacity, typically because an overly long or improperly sequenced chain of transaction log backups is being applied during a page restore operation. It commonly arises when a DBA attempts to restore too many individual pages in a single RESTORE DATABASE...PAGE statement, or when the restore sequence hasn’t been finalized with a tail-log backup before continuing. Corrupted backup files or an interrupted restore chain can also cause SQL Server to lose track of the proper sequence, triggering this limit prematurely.

Step-by-Step Resolution Guide

Step 1: Complete or Reset the Current Restore Sequence

  • Run RESTORE DATABASE [YourDB] WITH RECOVERY to finalize the existing page restore sequence if it is already in progress.
  • If recovery isn’t desired yet, verify the sequence status using RESTORE HEADERONLY against the log backup files to confirm LSN continuity.
  • Avoid issuing additional RESTORE...PAGE commands until the current batch is fully resolved.

Step 2: Reduce the Number of Pages Restored Per Batch

  • Instead of listing dozens of pages in one RESTORE DATABASE...PAGE='1:100,1:101,1:102...' statement, split the page list into smaller batches (e.g., 10–20 pages per restore command).
  • Execute each batch sequentially, applying all required log backups between batches using RESTORE LOG [YourDB] FROM DISK = 'C:\Backups\YourDB_log.trn' WITH NORECOVERY.
  • This prevents the internal restore-tracking array from exceeding its page limit.

Step 3: Validate Backup File Integrity

  • Run RESTORE VERIFYONLY FROM DISK = 'C:\Backups\YourDB_full.bak' to confirm the backup file isn’t corrupted.
  • Check Windows Server 2025 Event Viewer under Applications and Services Logs > MSSQLSERVER for I/O or disk-related warnings that may indicate storage corruption affecting the backup chain.
  • If corruption is found, restore from an alternate backup set or rebuild the backup chain from the last known-good full backup.

Step 4: Apply the Tail-Log Backup and Finalize Recovery

  • Before bringing the database online, back up the tail of the log using BACKUP LOG [YourDB] TO DISK = 'C:\Backups\YourDB_tail.trn' WITH NORECOVERY.
  • Restore this tail-log backup as the final step in the sequence: RESTORE LOG [YourDB] FROM DISK = 'C:\Backups\YourDB_tail.trn' WITH RECOVERY.
  • This closes out the restore sequence cleanly and clears the internal page-tracking buffer.

Alternative or Verification Steps

  • After recovery, run DBCC CHECKDB('YourDB') WITH NO_INFOMSGS to confirm the restored pages are consistent and no further corruption exists.
  • If the error persists across multiple attempts, consider performing a full database restore instead of page-level restores, especially if the number of corrupted pages exceeds 5–10% of the database size.