Sql-Server

SQL Server 2016 數據庫備份無法在 SQL Server 2019 上還原

  • June 30, 2021

我們試圖將數據庫從 SQL Server 2016 開發人員版還原到 SQL Server 2019 開發人員版,但由於異常而失敗。

有關此數據庫的詳細資訊:

  1. 它有記憶體中的文件組
  2. 它在一年前啟用了 TDE,但從那時起就被刪除了。

觀察:

  1. 能夠在 SQL Server 2016 實例上成功還原和恢復相同的備份。
  2. DBCC CHECKDB回來乾淨。
  3. 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 之前備份您的數據庫)

引用自:https://dba.stackexchange.com/questions/292691