Sql-Server
SQL Server 2016 數據庫備份無法在 SQL Server 2019 上還原
我們試圖將數據庫從 SQL Server 2016 開發人員版還原到 SQL Server 2019 開發人員版,但由於異常而失敗。
有關此數據庫的詳細資訊:
- 它有記憶體中的文件組
- 它在一年前啟用了 TDE,但從那時起就被刪除了。
觀察:
- 能夠在 SQL Server 2016 實例上成功還原和恢復相同的備份。
DBCC CHECKDB
回來乾淨。encryption_state
此數據庫的值設置為 0。SQL 2019 實例上的恢復命令出錯:
Msg 41316, Level 16, State 0, Line 0 Restore operation failed for database 'database_01' with internal error code '0x82000000'. Msg 3013, Level 16, State 1, Line 2 RESTORE DATABASE is terminating abnormally.
SQL 2019 實例上的錯誤日誌錯誤:
LogDate Source Text ------- ------ ---- 6/2/2021 4:16:08 PM spid55 Starting up database 'database_01'. 6/2/2021 4:16:08 PM spid55 [INFO] HkHostDbCtxt::Initialize(): Database ID: [5] 'database_01'. XTP Engine version is 2.11. 6/2/2021 4:16:08 PM spid55 The database 'database_01' is marked RESTORING and is in a state that does not allow recovery to be run. 6/2/2021 4:16:08 PM spid55 Error: 33126, Severity: 16, State: 1. 6/2/2021 4:16:08 PM spid55 Database encryption key is corrupted and cannot be read. 6/2/2021 4:16:08 PM spid55 [ERROR] HkRtRestoreDatabase(): Recovery failed with error 0x82000000 on database 5. This error will be mapped to 'HK_E_RESTORE_ABORTED' (0x82000018). (sql\ntdbms\hekaton\runtime\src\hkruntime.cpp:5505) 6/2/2021 4:16:08 PM spid55 restoreHkDatabase: DbId 5, Msg 41316, Level 16, State 0, Restore operation failed for database 'database_01' with internal error code '0x82000000'. 6/2/2021 4:16:08 PM spid55 [ERROR] HkHostRecoverDatabaseHelper::ReportAndRaiseFailure(): Database ID: [5] 'database_01'. Failed to load XTP checkpoint. Error code: 0x82000018. (sql\ntdbms\hekaton\sqlhost\sqlmin\hkhostdb.cpp:5741) 6/2/2021 4:16:08 PM spid55 [INFO] Database ID: [5]. Cleaning up StorageArray. LastClosedCheckpointEndTs: '0'
- 聯繫 Microsoft 後,我們了解到我們遇到了一種罕見的情況,該情況阻止了我們在 SQL Server 2019 上進行還原。
- 為了解決這個問題,我們不得不與微軟共享我們的備份來修復,他們不得不手動禁用斷言檢查。(奇怪,但唯一的解決方案)
- 好消息是該修補程序即將推出。
版本詳情:
來源:
Microsoft SQL Server 2016 (SP2-CU15-GDR) (KB4583461) - 13.0.5865.1 (X64)
目標:
Microsoft SQL Server 2019 (RTM-CU10) (KB5001090) - 15.0.4123.1 (X64)
我認為您必須在 SQL Server 2016 上的源數據庫上刪除數據庫加密密鑰。
USE [YourDatabase] GO DROP DATABASE ENCRYPTION KEY
然後,您必須再次進行備份。現在您的還原應該可以在 SQL Server 2019 上執行。
(PS:在刪除 EK 之前備份您的數據庫)