共用方式為


使用具有多重等量分割的 VDI 應用程式還原 SQL Server 資料庫可能會失敗,錯誤 3456

本文可協助您解決使用虛擬設備介面 (VDI) 應用程式還原 SQL Server 資料庫時所發生的問題。

徵兆

當您在 SQL Server 2019 或更新版本上還原多等量 虛擬設備介面 (VDI) 完整備份時,您可能會收到錯誤 MSSQLSERVER_3456

Msg 3456, Level 16, State 1, Line <LineNumber>
Could not redo log record (120600:18965748:1), for transaction ID (0:1527178398), on page (14:1987189), allocation unit 72057761533001728, database 'DB1_STRIPE' (database ID 8).
Page: LSN = (120598:23255372:8), allocation unit = 72057761317781504, type = 1. Log: OpCode = 6, context 2, PrevPageLSN: (120600:18965371:85).

原因

當 SQL Server 備份至 VDI 時,它會透過緩衝區將數據傳遞至 VDI。 然後,VDI 會處理如何儲存該備份的格式。 不過,在許多情況下,VDI 用戶端可能只預期每個數據頁的單一複本。

當您將備份等量分割至 VDI 時,多個備份裝置會組成完整備份的內容。 數據會以異步方式寫入,而且數據複製順序是由 VDI 用戶端的邏輯處理。 由於數據複製階段是異步的,因此數據可以依順序寫出。 不過,在 SQL Server 2019 之前的完整備份案例中,每個數據頁面只有一個復本。 因此,當 VDI 用戶端將數據傳送至 SQL Server 讀取的緩衝區以進行還原時,SQL Server 仍然可以確切地知道每個數據頁面的還原位置及方式。 在 SQL Server 2019 中引進延遲記錄釘選後,備份檔中可能會找到多個數據頁面複本。 由於完整備份內發生迷你差異備份,因此存在多個複本(如需詳細資訊,請參閱 詳細資訊 一節)。 VDI 用戶端不預期相同數據頁的多個複本,或以錯誤的順序將數據頁傳回 SQL Server。 此行為會導致還原失敗。 錯誤 3456 Could not redo log record 表示 SQL Server 嘗試套用預期最新版數據頁面的記錄檔記錄,但會找到較舊的版本。

解決方法

  1. 根據您的組態,您必須啟用一或多個追蹤旗標作為 SQL Server 實例的啟動參數:

    • 如果您在實例作為主要複本或沒有可用性群組的實例時進行完整備份,請啟用追蹤旗標 3471 以停用完整備份的延遲記錄釘選功能。

    • 如果您在實例作為主要複本或沒有可用性群組的實例時進行差異備份,請啟用追蹤旗標 3475 以停用差異備份的延遲記錄釘選功能。

    • 如果您在實例作為次要複本時使用COPY_ONLY進行完整備份,請啟用追蹤旗標 3472 以停用差異備份的延遲記錄釘選功能。

  2. 重新啟動 SQL Server。

  3. 再次進行完整或差異備份。

注意

您也可以使用 DBCC TRACEON 命令暫時啟用這些追蹤旗標。

DBCC TRACEON(3471,3472,3475,-1)

如果您無法立即重新啟動 SQL Server 實例,您可以使用此命令來減輕問題。

重要

由於此問題,如果下列條件成立,現有的備份可能無法還原:

  • 備份會在啟用延遲記錄釘選功能時進行。
  • 備份工具使用 VDI。
  • 備份是使用多重等量分割來完成(備份至數個檔案)。

建議您在測試伺服器上還原現有的備份,以檢查是否可以成功還原備份。

其他相關資訊

SQL Server 2019 引進了稱為延遲記錄釘選的功能。 在引進這項功能之前,在完整資料庫備份期間,SQL Server 會封鎖任何發生的交易(釘選記錄檔)、複製數據和記錄檔,然後在開頭移除釘選。 在功能存在時,SQL Server 會將交易從發生(釘選記錄檔)延遲到備份持續時間的結尾,而不是從頭開始。 這項功能的設計目的是在完整備份期間避免完整事務歷史記錄問題(MSSQLSERVER_9002 錯誤),而完整備份需要很長的時間才能完成。 由於記錄釘選延遲,因此在備份進行時,仍允許將交易套用至資料庫的數據頁。 SQL Server 會維護位圖,以識別自進行中完整備份開始時間以來已變更的頁面,讓其可以進行小型差異備份。 如此一來,它就會取得備份整個資料庫時所變更之每個數據頁的更新複本。 這會導致某些數據頁的額外複本。 此外,會建立完整備份的這個額外區段。