A backup job that reports success doesn’t prove the backup restores. This 14-part series builds the checks that do.

It covers reading backup headers across SQL Server versions, finding backup files from inside SQL Server, and validating striped sets, differential bases, the log chain and backup lineage. The later parts check whether a point in time is reachable and generate the restore script from what the headers prove.
- Proving the Restore, Part 1: The Backup Job Said Success
- Proving the Restore, Part 2: HEADERONLY Changes Shape Between Versions
- Proving the Restore, Part 3: The Error That Blames the Wrong Statement
- Proving the Restore, Part 4: Finding Backup Files Without xp_cmdshell
- Proving the Restore, Part 5: Striped Backups Are All or Nothing
- Proving the Restore, Part 6: The Differential Base Has to Match
- Proving the Restore, Part 7: One File, Hundreds of Backup Sets
- Proving the Restore, Part 8: Proving the Log Chain Has No Gaps
- Proving the Restore, Part 9: Backups From a Different Database
- Proving the Restore, Part 10: Can You Reach That Point in Time?
- Proving the Restore, Part 11: Generating the Restore Script
- Proving the Restore, Part 12: The Files That Take No Extension
- Proving the Restore, Part 13: Two Vocabularies for the Same Backup
- Proving the Restore, Part 14: Getting the Script Out of the Procedure
Questions or corrections are welcome on Bluesky or LinkedIn. See all series on this blog.