使用 MAXTRANSFERSIZE 和 CHECKSUM 時無法恢復啟用 TDE 的數據庫
更新:@AmitBanerjee - Microsoft SQL Server 產品組的高級項目經理確認 MS 將調查該問題,因為它是一個缺陷。
MAXTRANSFERSIZE
是否有人在啟用 TDE 並使用> 65536(在我的情況下,我選擇 65537 以便我可以壓縮 TDE 數據庫)的情況下恢復在 SQL Server 2016 上進行的備份時遇到問題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 = ON,0 = OFF):
+-------------------------+-------------+----------+--------+ | 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) Microsoft Corporation Enterprise Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 (Build 9600) :)
我能夠重現您的問題。
添加
FORMAT
到BACKUP
命令中為我解決了它。雖然我似乎找不到具體的文件,但我認為這與
INIT
在備份集中保留現有媒體標頭同時FORMAT
創建新媒體標頭的事實有關。我仍在研究這個問題,如果我找到更多資訊,我會更新這個答案。
似乎這可能已通過 KB 4032200 解決:
從那個條目:
症狀
假設您在 Microsoft SQL Server 2016 中為數據庫啟用透明數據加密 (TDE)。您嘗試使用同時指定了和選項的**
BACKUP DATABASE
T-SQL 語句備份數據庫。在這種情況下,您可能會注意到現有的備份文件被新的備份文件覆蓋,並且新的備份文件沒有被壓縮。COMPRESSION
****INIT
**解決
此問題已在 SQL Server 的以下累積更新中得到修復: