Troubleshooting Guide: Error 3043 – BACKUP Detected an Error on Page
Why This Error Happens
Error 3043 occurs when SQL Server’s backup process reads a data page and finds that its checksum or torn-page value does not match the expected result, indicating physical corruption on disk. This is typically caused by underlying storage subsystem faults, faulty disk controllers, improper SAN/NAS cache flushing, or sudden power loss that resulted in incomplete writes. In rarer cases, it can also stem from memory corruption on the server that occurred before the page was written to disk.
Step-by-Step Resolution Guide
Step 1: Run DBCC CHECKDB to Assess the Damage
- Open SQL Server Management Studio (SSMS) and connect to the affected instance.
- Execute
DBCC CHECKDB ('YourDatabaseName') WITH NO_INFOMSGS, ALL_ERRORMSGS;to get a full list of corrupted pages and objects. - Note the specific page IDs (e.g.,
(1:154232)) and the associated table/index reported in the output.
Step 2: Check Windows Event Logs and Hardware Health
- Open Event Viewer on Windows Server 2025 and navigate to Windows Logs > System.
- Filter for Event ID 7, 9, 11, or 51 (Disk warnings) or Event ID 157 (Device not ready) which often correlate with SQL Server 3043 errors.
- Cross-reference the timestamp of the SQL error with any storage driver or disk timeout warnings to confirm a hardware-level root cause.
- Run
chkdsk C: /f /r(adjust drive letter as needed) during a maintenance window to scan the physical volume for file system errors.
Step 3: Restore from a Clean Backup
- Locate the most recent full backup taken before the corruption was introduced (use
RESTORE HEADERONLYto inspect backup set dates). - Restore the database to a new location or instance using:
RESTORE DATABASE YourDatabaseName FROM DISK = 'D:\Backups\YourDatabaseName.bak' WITH REPLACE, RECOVERY; - If transaction log backups exist, apply them sequentially using
WITH NORECOVERYuntil you reach the point just before the corruption occurred.
Step 4: Repair the Database (If No Clean Backup Exists)
- As a last resort, put the database in single-user mode:
ALTER DATABASE YourDatabaseName SET SINGLE_USER WITH ROLLBACK IMMEDIATE; - Run
DBCC CHECKDB ('YourDatabaseName', REPAIR_ALLOW_DATA_LOSS);— note that this may delete corrupted rows to maintain structural integrity. - Set the database back to multi-user mode:
ALTER DATABASE YourDatabaseName SET MULTI_USER;
Step 5: Replace Faulty Hardware or Reconfigure Storage
- If Step 2 confirmed a disk-level issue, work with your infrastructure team to replace the failing physical disk, RAID controller, or SAN LUN.
- On Windows Server 2025, verify that Write Caching is properly configured under Device Manager > Disk Drives > Policies, ensuring it aligns with battery-backed cache on the RAID controller.
Alternative or Verification Steps
- After restoring or repairing, re-run
DBCC CHECKDB ('YourDatabaseName') WITH NO_INFOMSGS;and confirm zero allocation or consistency errors are returned. - As an alternative, if corruption persists across restores, use
RESTORE VERIFYONLY FROM DISK = 'D:\Backups\YourDatabaseName.bak'to confirm backup file integrity before attempting another restore cycle.