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

Why This Error Happens

Error 3241 typically occurs when SQL Server attempts to read a backup file (.bak or .trn) whose header or internal structure does not match what the Database Engine expects. This is most commonly caused by a corrupted or truncated backup file, a backup created by an incompatible or newer version of SQL Server, or the file being transferred between systems in ASCII/text mode instead of binary mode (which corrupts the byte structure). It can also occur if the backup device path is pointing to the wrong file, or if third-party backup compression/antivirus software interfered with the file during creation.

Step-by-Step Resolution Guide

Step 1: Verify the Backup File Integrity

  • Check the file size of the .bak file on disk — compare it to the expected size from your backup job logs or monitoring tool.
  • Navigate to the backup location, e.g., C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Backup\, and confirm the file isn’t 0 KB or unusually small.
  • Run RESTORE VERIFYONLY FROM DISK = 'C:\Backups\YourDB.bak' in SQL Server Management Studio (SSMS) to check header validity before attempting a full restore.

Step 2: Confirm File Transfer Method (If Moved Between Servers)

  • If the backup was copied from another server or downloaded from cloud storage (e.g., Azure Blob, SFTP, FTP), ensure it was transferred in Binary mode, not ASCII/Text mode.
  • For FTP transfers, explicitly set TYPE I (binary) before transferring the file.
  • Re-copy the file using Robocopy or a direct SMB share instead of FTP where possible:
    robocopy "\\SourceServer\Backups" "C:\Backups" YourDB.bak

Step 3: Check SQL Server Version Compatibility

  • Confirm the backup wasn’t created on a newer version of SQL Server (e.g., SQL Server 2025) and is being restored on an older instance (e.g., SQL Server 2019 or 2022).
  • Run SELECT @@VERSION on both the source and destination instances to compare versions.
  • If versions are mismatched, restore the backup only on an instance of SQL Server 2025 or later, or request a backup taken at a compatible compatibility level.

Step 4: Rule Out Antivirus or Backup Software Interference

  • Open Windows Security > Virus & threat protection > Exclusions and add the SQL Server backup directory (e.g., C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Backup\) to prevent real-time scanning from locking or modifying files during write operations.
  • Temporarily disable third-party backup compression agents and re-run a fresh native backup using BACKUP DATABASE YourDB TO DISK = 'C:\Backups\YourDB_Fresh.bak' WITH INIT, CHECKSUM;

Step 5: Re-Generate a Clean Backup (If File Is Confirmed Corrupt)

  • If verification fails consistently, the original backup file is unrecoverable — go back to the source server and generate a new backup.
  • Use the WITH CHECKSUM option during backup creation going forward to catch corruption early:
    BACKUP DATABASE YourDB TO DISK = 'C:\Backups\YourDB.bak' WITH CHECKSUM, STATS = 10;

Alternative or Verification Steps

  • Run RESTORE HEADERONLY FROM DISK = 'C:\Backups\YourDB.bak' — if this succeeds without error, the file header is intact and the issue may lie elsewhere (e.g., permissions on the restore target).
  • If native restore continues to fail, try a third-party tool (e.g., ApexSQL Restore or SQL Backup Master) to attempt a partial data extraction from the damaged file as a last resort before restoring from an older, known-good backup.