更新:@AmitBanerjee -Microsoft SQL Server产品组的高级程序经理,确认MS将调查此问题,因为它是缺陷。
有没有人遇到在启用TDE并使用MAXTRANSFERSIZE
> 65536的情况下还原在SQL Server 2016上进行的备份的问题(对于我而言,我选择了65537,以便可以压缩TDE数据库)和CHECKSUM
?
下面是一个副本:
--- create database
create database test_restore
go
-- create table
create table test_kin (fname char(10))
go
-- Enable TDE
use master
GO
CREATE CERTIFICATE test_restore WITH SUBJECT = 'test_restore_cert'
GO
SELECT name, pvt_key_encryption_type_desc, * FROM sys.certificates WHERE name = 'test_restore'
GO
use test_restore
go
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE test_restore
GO
alter database test_restore set encryption ON
只做完整副本备份..做两次..
backup database test_restore
to disk = 'D:\temporary-short-term\test_restore_KIN_test_restore_1.bak' -- change as per your location !!
with init, stats =10 -- overwrite ..using INIT !!
, maxtransfersize = 65537
, compression
,CHECKSUM
现在做一个verifyonly
...
restore verifyonly from disk = 'D:\temporary-short-term\test_restore_KIN_test_restore_1.bak'
错误信息 :
消息3241,第16级,状态40,第11行第设备'D:\ temporary-short-term \ test_restore_KIN_test_restore_1.bak'上的媒体系列格式错误。SQL Server无法处理此媒体系列。消息3013,级别16,状态1,第11行验证数据库异常终止。
不同组合的结果(1 =开,0 =关):
+-------------------------+-------------+----------+--------+
| MAXTRANSFERSIZE (65537) | COMPRESSION | CHECKSUM | RESULT |
+-------------------------+-------------+----------+--------+
| 1 | 1 | 1 | FAIL |
| 1 | 1 | 0 | PASS |
| 1 | 0 | 1 | FAIL |
| 0 | 0 | 0 | PASS |
| 0 | 1 | 1 | PASS |
| 0 | 1 | 0 | PASS |
+-------------------------+-------------+----------+--------+
问题发生在:
Microsoft SQL Server 2016(RTM-CU1)(KB3164674)-13.0.2149.0(X64)2016年7月11日22:05:22版权所有(c)Windows Server 2012 R2 Standard 6.3(Build 9600)上的Microsoft Corporation Enterprise Edition(64位) :)
FORMAT
也会覆盖标头,使用时不会发生FORMAT
。这仍然是一个谜一样,为什么备份标头(或备份作为一个整体)使用时被破坏MAXTRANSFERSIZE
,并CHECKSUM
一起随着INIT。在较低版本中从未发生过这种情况,但是在较低版本中则没有MAXTRANSFERSIZE
。感谢您的回答。如果有人有更多信息,将保持打开状态。