Troubleshooting Guide: Error 3070 — FORMAT and FILE_SNAPSHOT Conflict in SQL Server 2025
Why This Error Happens
This error occurs because the FORMAT option and the FILE_SNAPSHOT option in a RESTORE or BACKUP statement are mutually exclusive in SQL Server’s command parser. FORMAT is used to overwrite media headers and reinitialize a backup device, while FILE_SNAPSHOT relies on existing VSS-based or Volume Shadow Copy infrastructure (often tied to Azure Blob Storage or local snapshot backups) that requires the media to already be intact and properly structured. Since FORMAT destroys existing media structure and FILE_SNAPSHOT depends on that structure being preserved, SQL Server blocks the combination to prevent corrupting the backup chain or snapshot metadata.
Step-by-Step Resolution Guide
Step 1: Identify the Conflicting T-SQL Statement
- Open SQL Server Management Studio (SSMS) or Azure Data Studio and locate the exact
BACKUP DATABASEorRESTORE DATABASEscript throwing Error 3070. - Check the
WITHclause for bothFORMATandFILE_SNAPSHOTkeywords appearing together, for example:
RESTORE DATABASE [YourDB] FROM DISK = 'D:\Backups\YourDB.bak' WITH FORMAT, FILE_SNAPSHOT;
- Confirm this is the statement causing the failure by checking the SQL Server Error Log at
C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Log\ERRORLOG.
Step 2: Remove the FORMAT Option When Using Snapshot Backups
- If you intend to use
FILE_SNAPSHOT(common with snapshot backups stored on Azure Blob Storage or local VSS-enabled volumes), removeFORMATentirely from the script. - Revised example:
RESTORE DATABASE [YourDB] FROM DISK = 'D:\Backups\YourDB.bak' WITH FILE_SNAPSHOT;
- Ensure the underlying storage subsystem supports snapshot backups (NTFS with VSS writer enabled, or Azure premium file shares).
Step 3: Use FORMAT Independently for Media Reinitialization
- If your primary goal is to reinitialize the backup media (overwrite existing backup sets), drop
FILE_SNAPSHOTand runFORMATalone. - Revised example:
BACKUP DATABASE [YourDB] TO DISK = 'D:\Backups\YourDB.bak' WITH FORMAT, INIT;
- Verify the destination path has sufficient disk space via File Explorer or
Get-PSDrivein PowerShell.
Step 4: Validate VSS Writer and Snapshot Prerequisites (If Using FILE_SNAPSHOT)
- On Windows Server 2025 / Windows 11, run
vssadmin list writersin an elevated Command Prompt to confirm the SQL Server VSS Writer service is running. - Restart the service if needed:
net stop "SQL Server VSS Writer"followed bynet start "SQL Server VSS Writer". - Confirm the backup target volume supports shadow copies via
vssadmin list volumes.
Step 5: Re-run the Corrected Script
- Execute the updated
BACKUPorRESTOREcommand without the conflicting option pair. - Monitor the SQL Server Error Log in real time using
sp_readerrorlogto confirm Error 3070 no longer appears.
Alternative or Verification Steps
- Run
RESTORE VERIFYONLY FROM DISK = 'D:\Backups\YourDB.bak'to confirm the backup file is valid and readable after making corrections. - If snapshot backups are not strictly required, consider omitting
FILE_SNAPSHOTaltogether and using standardWITH FORMAT, INIT, STATS = 10for a traditional backup/restore workflow instead.