- Error number
- 3183
- Severity
- 16 (user-correctable error)
- State
- 1
- Product
- Microsoft SQL Server Database Engine
- Versions
- All supported SQL Server versions (2016 to 2025), Azure SQL Managed Instance
- Category
- Backup & Restore
- Last reviewed
- 24 October 2026
On this page
What it means
Error 3183 means a page read from the backup failed its checksum validation during RESTORE, so the backup (or the database it was taken from) contains a damaged page and the restore stopped.
A backup taken WITH CHECKSUM carries the page checksums of the database. While restoring it, SQL Server validates each page again; if a page does not match, it raises 3183 with the page address (file:page) and the database name, and the restore ends with Msg 3013 ... RESTORE DATABASE is terminating abnormally. The target database is not usable from this attempt, but nothing else is affected.
The damage was either already in the database when it was backed up, or happened to the backup afterwards: on the disk or tape that stores it, or while it was copied between servers. Microsoft points to hardware and operating system issues as the usual root cause. Treat it as a storage incident, not as a restore syntax problem: find a good backup, and find out where the damage came from so other backups are not affected too.
Common causes
- The backup file was damaged after it was written: faulty disk, controller or tape, or a storage system that returned bad data.
- The file was damaged while it was copied or transferred (network share, cloud upload, removable media) and the copy differs from the original.
- The source database already had a damaged page, and the backup was taken WITH CHECKSUM, CONTINUE_AFTER_ERROR, which writes the backup despite the error.
- Memory or I/O path problems on the server that wrote or read the backup.
Diagnose it
Read-only These queries only read metadata and dynamic management views. They do not change data, permissions or configuration, so they are safe to run first.
Is the backup marked as damaged, and does it have checksums?
For a backup file from anywhere, RESTORE HEADERONLY FROM DISK = N'D:\Backups\AppDb.bak'; shows HasBackupChecksums and IsDamaged, and RESTORE VERIFYONLY FROM DISK = N'...' WITH CHECKSUM; reads the whole file and checks every page without restoring anything. For backups taken on this server, msdb has the same flags.
SELECT TOP (10) bs.backup_finish_date, bs.type, bs.has_backup_checksums, bs.is_damaged,
bs.server_name, mf.physical_device_name
FROM msdb.dbo.backupset AS bs
JOIN msdb.dbo.backupmediafamily AS mf ON mf.media_set_id = bs.media_set_id
WHERE bs.database_name = N'AppDb'
ORDER BY bs.backup_finish_date DESC; is_damaged = 1 means the backup was written with CONTINUE_AFTER_ERROR over a damaged page: the problem was in the source database. If the backup is not flagged, the file was more likely damaged later, and an older or another copy may restore cleanly.
Has the source database reported damaged pages?
Run on the server the backup came from.
SELECT DB_NAME(database_id) AS database_name, file_id, page_id,
event_type, error_count, last_update_date
FROM msdb.dbo.suspect_pages
ORDER BY last_update_date DESC; A row for the same file and page as in the 3183 message means the page was already bad in the database itself; see error 824. No rows points to damage in the backup copy.
Check the source database for consistency
Read-only, but it reads the whole database: run it outside busy hours on large databases.
DBCC CHECKDB (N'AppDb') WITH NO_INFOMSGS, ALL_ERRORMSGS; No output means no corruption was found in the live database, so a fresh backup WITH CHECKSUM should restore cleanly. Errors here mean the source needs attention first.
How to fix it
Each fix is labelled with what it changes. Try read-only checks and the least invasive fix first, and test changes outside production.
Restore from another good backup
Changes database stateMicrosoft's first recommendation is the last known good backup. Use an earlier full backup (or a second copy of the same file from another location) and bring it forward with differential and log backups, all WITH CHECKSUM and NORECOVERY except the last step. Log backups taken after the damaged full backup still apply on top of an earlier full backup if the log chain is unbroken.
Caution: REPLACE overwrites the existing database. If it is the live database and still holds changes, take a tail-log backup first (see error 3159).
RESTORE DATABASE AppDb
FROM DISK = N'\\backupserver\sql\AppDb_full_20261020.bak'
WITH CHECKSUM, NORECOVERY, REPLACE;
RESTORE LOG AppDb
FROM DISK = N'\\backupserver\sql\AppDb_log_20261021_0000.trn'
WITH CHECKSUM, RECOVERY;
If the source database is healthy: take a new backup and verify it
Client or network sideWhen the live database passes DBCC CHECKDB and only the backup is bad, take a new backup WITH CHECKSUM to different storage, copy it again if needed, and run RESTORE VERIFYONLY ... WITH CHECKSUM on the copy before you rely on it.
Last resort only: CONTINUE_AFTER_ERROR into a separate database
Changes database stateMicrosoft documents CONTINUE_AFTER_ERROR as a way to restore past the damaged page when no good backup exists, followed by DBCC CHECKDB. Restore under a new name with MOVE, never over the database or backup you still have, then check it and copy out what you can.
Caution: The result is a database with known damage: the restore carries on past the bad pages instead of repairing them, so some data can be missing or wrong. Never put it back into production use as if it were a normal restore, never restore it over your only other copy, and get the owner of the data to agree on what is recovered. Exhaust every other backup first.
RESTORE DATABASE AppDb_Salvage
FROM DISK = N'D:\Backups\AppDb_full_20261023.bak'
WITH CONTINUE_AFTER_ERROR,
MOVE N'AppDb' TO N'D:\SQLData\AppDb_Salvage.mdf',
MOVE N'AppDb_log' TO N'D:\SQLLogs\AppDb_Salvage_log.ldf';
DBCC CHECKDB (N'AppDb_Salvage') WITH NO_INFOMSGS, ALL_ERRORMSGS;
Examples
Restoring a backup with a damaged page (as documented by Microsoft)
Shown as documented by Microsoft and not reproduced here: producing it requires deliberately damaging a database or backup file. The database name and page address are Microsoft's example values.
RESTORE DATABASE corruption_errors_test
FROM DISK = N'D:\Backups\corruption_errors_test.bak'
WITH CHECKSUM;
Msg 3183, Level 16, State 1, Line 1 RESTORE detected an error on page (1:243) in database "corruption_errors_test" as read from the backup set. Msg 3013, Level 16, State 1, Line 1 RESTORE DATABASE is terminating abnormally.
How to prevent it
Take every backup WITH CHECKSUM (or enable the backup checksum default server setting after review), keep at least two copies on different storage, and verify copies with RESTORE VERIFYONLY ... WITH CHECKSUM after every transfer. Run DBCC CHECKDB on a schedule so damage in the database is found before it reaches your backups.
Test restores regularly on another server. A restore test is the only way to be sure a backup can be restored, and it catches damaged backup media while older good backups still exist.
Common questions
Is my production database corrupt if I get 3183?
Not necessarily. The damaged page may exist only in the backup copy. Check msdb.dbo.suspect_pages and run DBCC CHECKDB on the source database to find out.
Why did the backup itself not fail?
Either it was taken without CHECKSUM, so pages were not validated while writing, or with CONTINUE_AFTER_ERROR, or the damage happened to the file after the backup finished.
Should I just add CONTINUE_AFTER_ERROR?
Only when no good backup exists, and only into a separate database. It restores past the damage instead of fixing it, so the result has to be checked and treated as damaged.
Learn more on CodeWithSQL
Official documentation
- MSSQLSERVER_3183 (Microsoft Learn)
- Specify whether a backup or restore continues or stops after an error
- Possible media errors during backup and restore
Last technically reviewed 24 October 2026; examples and diagnostics run on SQL Server 2025 (17.0.1145.4). Message text checked against the engine's sys.messages catalogue.