1

I have a task of making periodical copy of the database, twice a day, and I should not break any backup chain niether accumulate these temporary backups. So I tried to take a copy_only backup with init in order to overwrite the single backup file.

My database in encrypted by using TDE.

I use backup compression at the server level, "backup compression default" is 1 in my sys.configurations. I don't use explicit with compression option in my command.

Here my full @@version:

Microsoft SQL Server 2019 (RTM-CU8) (KB4577194) - 15.0.4073.23 (X64) Sep 23 2020 16:03:08 Copyright (C) 2019 Microsoft Corporation Enterprise Edition (64-bit) on Windows Server 2016 Datacenter 10.0 (Build 14393: ) (Hypervisor)

My problem is this error below:

Msg 3241, Level 16, State 40, Line 8 The media family on device 'W:\SQL_backup\copy_only\billing_prod2_test.bak' is incorrectly formed. SQL Server cannot process this media family. Msg 3013, Level 16, State 1, Line 8 RESTORE DATABASE is terminating abnormally.

Here is the full code I executed:

backup database billing_prod2
to disk = 'W:\SQL_backup\copy_only\billing_prod2_test.bak'
with init, copy_only--, format;
go
restore database billing_1
from disk = 'W:\SQL_backup\copy_only\billing_prod2_test.bak'
with move 'billing_prod2' to 'E:\SQL_data\billing_1.mdf',
move 'billing_prod2_log' to 'E:\SQL_data\billing_1_log.ldf',
replace

The first time it executes without errors, the size of full backup is about 35Mb and it restores perfectly.

The second time the backup executes without error but strangely has a size of 260Mb. This is the size I see on the disk and the same size is written in the output of restore headeronly that still executes without errors. But when I do restore database the error mentioned above appears.

I tried to execute the same code using another db and another disk to save the backup but the result is always the same: the first time it works, the second time the file is overwritten but has different size that is not just a double size, it's almost 10 times of initial size. restore headeronly never fails and always reports only one file within the backup file but the size is multipticated and restore database fails.

without format

Only when I added format option the size of backup became normal and restore succeeded.

with format

My question is: why should I use format with my backup in this case to be able to restore?

asked Mar 11, 2021 at 14:53

1 Answer 1

3

This is indeed a bug in SQL Server. We (@sepupic and I) had some discussions offline and managed to narrow down the circumstances: The error occurs when:

  • You use TDE
  • The backup is compressed
  • You specify COPY_ONLY
  • You specify INIT
  • The backup file exists

Repro:

--The database has TDE
--Backupfile doesn't exist at this stage
BACKUP DATABASE db1Encrypted
TO DISK = 'R:\db1Encrypted.bak'
WITH INIT, COPY_ONLY, COMPRESSION, CHECKSUM
--backup file 660 kb
RESTORE VERIFYONLY FROM DISK = 'R:\db1Encrypted.bak' WITH CHECKSUM
--OK
--Backupfile now exists, below causes unreadable backup
BACKUP DATABASE db1Encrypted
TO DISK = 'R:\db1Encrypted.bak'
WITH INIT, COPY_ONLY, COMPRESSION, CHECKSUM
--backup file 3890 kb
RESTORE VERIFYONLY FROM DISK = 'R:\db1Encrypted.bak' WITH CHECKSUM
--Fails "The media family on device 'R:\db1Encrypted.bak' is incorrectly formed"
answered Mar 11, 2021 at 15:10
0

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.