本文內容
適用范圍:
本文概述了 SQL Server 的數據庫還原和恢復過程。
概述
若要從故障中恢復 SQL Server 數據庫,數據庫管理員必須按照邏輯上正確且有意義的還原順序來還原一組 SQL Server 備份。 SQL Server 還原和恢復支持從整個數據庫、數據文件或數據頁的備份中恢復數據,如下所示:
SQL Server 備份和還原可跨所有受支持的操作系統進行。 有關支持的操作系統的信息,請參閱安裝 SQL Server 的硬件和軟件要求。 有關支持從 SQL Server 的早期版本進行備份的信息,請參閱 RESTORE 中的“兼容性支持”部分。
還原方案
SQL Server 中的還原方案是從一個或多個備份還原數據、繼而恢復數據庫的過程。 支持的還原方案取決于數據庫的恢復模式和 SQL Server 的版本。
下表介紹了不同恢復模式所支持的可行還原方案。
還原方案在簡單恢復模式下在完整/大容量日志恢復模式下
數據庫完整還原
這是基本的還原策略。 數據庫完整還原可能涉及完整數據庫備份的簡單還原和恢復。 另外,完整的數據庫還原還可能涉及還原完整數據庫備份,以及還原和恢復差異備份。
有關詳細信息,請參閱完整數據庫還原(簡單恢復模式)。
這是基本的還原策略。 數據庫完整還原涉及還原完整數據庫備份或差異備份(如果有),以及還原所有后續日志備份(按順序)。 通過恢復并還原上一次日志備份 (RESTORE WITH ) 完成數據庫完整還原。
有關詳細信息,請參閱完整數據庫還原(完全恢復模式)
文件還原 1
還原損壞的只讀文件,但不還原整個數據庫。 僅在數據庫至少有一個只讀文件組時才可以進行文件還原。
還原一個或多個文件,而不還原整個數據庫。 可以在數據庫處于脫機狀態時執行文件還原,對于某些 SQL Server 版本,也可以在數據庫仍處于聯機狀態時執行。 在文件還原過程中,包含正在還原的文件的文件組一直處于脫機狀態。
頁面還原
不適用
還原損壞的頁面。 可以在數據庫處于脫機狀態時執行頁面還原,對于某些 SQL Server 版本,也可以在數據庫仍處于聯機狀態時執行。 在頁面還原過程中,正在還原的頁面一直處于脫機狀態。
必須具有完整的日志備份鏈(包含當前日志文件),并且必須應用所有這些日志備份以使頁面與當前日志文件保持一致。
有關詳細信息,請參閱還原頁 (SQL Server)。
段落還原 1
按文件組級別并從主文件組和所有讀寫輔助文件組開始,分階段還原和恢復數據庫。
按文件組級別并從主文件組開始,分階段還原和恢復數據庫。
有關詳細信息,請參閱段落還原 (SQL Server)
1 僅在 Edition 中支持聯機還原。
還原數據庫的步驟
若要執行文件還原,數據庫引擎需要執行兩個步驟:
若要執行數據庫還原,數據庫引擎需要執行三個步驟:
無論以何種方式還原數據,在恢復數據庫前,SQL Server 數據庫引擎都需要保證整個數據庫在邏輯上的一致性。 例如,若要還原一個文件,則必須將該文件前滾足夠長度,以便與數據庫保持一致,然后才能恢復該文件并使其聯機。
文件還原或頁面還原的優點
只還原和恢復個別文件或頁面(而非整個數據庫)的方法具有以下優點:
恢復和事務日志
對于大多數還原方案,需要應用事務日志備份并允許 SQL Server 數據庫引擎運行恢復進程以使使數據庫聯機。 恢復是 SQL Server 用于使每個數據庫以事務一致(或干凈)狀態啟動的進程。
發生故障轉移或其他非干凈關閉時,數據庫可能處于這樣的狀態:某些修改從未從緩沖區緩存寫入數據文件,且在數據文件內可能有未完成事務所做的某些修改。 SQL Server 實例啟動時,會根據最后一個數據庫檢查點來運行每個數據庫的恢復,其中包含三個階段:
有關每個數據庫恢復階段的進度的信息將記錄在 SQL Server 錯誤日志中。 還可以使用擴展事件跟蹤數據庫恢復進度。 有關詳細信息,請參閱博客文章數據庫恢復進度的新擴展事件。
注意
對于段落還原方案,如果在文件備份創建之前,只讀文件組就已處于只讀狀態,則該文件組無需應用日志備份,并且文件還原會跳過日志備份的應用過程。
注意
為了在 SQL Server 服務啟動后(例如在 Always On 故障轉移群集實例發生故障轉移或就地重新啟動后)最大限度地提高企業環境中數據庫的可用性,SQL Server Edition 可以在重做階段后,撤消階段仍在執行時使數據庫聯機。 這稱為“快速恢復”。 但是,當數據庫處于聯機狀態但 SQL Server 服務尚未重新啟動時,快速恢復不可用。 例如,執行 ALTER SET ONLINE; 將不允許數據庫在恢復的所有三個階段均已完成前處于讀寫狀態。
恢復模式和支持的還原操作
可用于數據庫的還原操作取決于所用的恢復模式。 下表簡要說明了每種恢復模式是否支持給定的還原方案以及適用范圍。
還原操作完整恢復模式大容量日志恢復模式簡單恢復模式
完整還原(如果日志可用)。
某些數據將丟失。
自上次完整備份或差異備份后的任何數據將丟失。
時間點還原
日志備份所涵蓋的任何時間。
日志備份包含任何大容量日志更改時不允許。
不支持。
文件還原 1
完全支持。
不完全支持。 2
僅對只讀輔助文件可用。
頁面還原 1
完全支持。
不完全支持。 2
無。
段落(文件組級)還原 1
完全支持。
不完全支持。 2
僅對只讀輔助文件可用。
1 僅在 SQL Server Edition 中可用
2 有關所需條件,請參閱本文后面的。
重要
無論數據庫的恢復模式如何,SQL Server 備份都無法還原到早于創建該備份的版本的 SQL Server 數據庫引擎版本。
簡單恢復模式下的還原方案
簡單恢復模式對還原操作有下列限制:
如果這些限制中有任何不適合于恢復要求的內容,我們建議您考慮使用完整恢復模式。 有關詳細信息,請參閱備份概述 (SQL Server)。
重要
無論數據庫的恢復模式如何,SQL Server 備份都無法從早于創建該備份的版本的 SQL Server 版本還原。
在大容量日志恢復模式下進行還原
本節討論特定于大容量日志恢復模式的還原注意事項,大容量日志恢復模式專門用于補充完整恢復模式。
注意
有關大容量日志恢復模式的介紹,請參閱事務日志 (SQL Server)。
通常,大容量日志恢復模式與完整恢復模式相似,針對完整恢復模式的說明信息對兩者都適用。 但是,大容量日志恢復模式對時點恢復和聯機還原存在影響。
對時點恢復的限制
如果在大容量恢復模式下執行的日志備份包含大容量日志更改,則不允許進行時點恢復。 試圖對包含大容量更改的日志備份執行時點恢復將導致還原操作失敗。
對聯機還原的限制
僅在滿足下列條件時,聯機還原順序才有效:
如果未滿足這些條件,聯機還原順序將失敗。
注意
建議在啟動聯機還原之前切換為完整恢復模式。 有關詳細信息,請參閱恢復模式 (SQL Server)。
有關如何執行聯機還原的信息,請參閱聯機還原 (SQL Server)。
數據庫恢復顧問 (SQL Server Studio)
數據庫恢復顧問簡化了制定還原計劃的過程,可以很輕松地實現最優的正確還原順序。 很多已知數據庫還原問題和客戶所要求的增強功能已得到解決。 數據庫恢復顧問引入的主要增強功能包括:
有關詳細信息,請參閱下列 SQL Server 可管理性博客中有關數據庫恢復顧問的信息:
加速數據庫恢復
SQL Server 2019 (15.x) 和 Azure SQL 數據庫中開始提供加速數據庫恢復。 通過重新設計 SQL Server 數據庫引擎,加速數據庫恢復極大地提高了數據庫可用性,尤其是存在長時間運行事務的情況下。 啟用了加速數據庫恢復的數據庫在故障轉移或其他非干凈關閉后完成恢復過程的速度顯著加快。 啟用加速數據庫恢復后,回滾取消長時間運行的事務的速度也顯著加快。
可使用以下語法對 SQL Server 2019 (15.x) 按數據庫啟用加速數據庫恢復:
ALTER DATABASE [] SET ACCELERATED_DATABASE_RECOVERY = ON;
注意
Azure SQL 數據庫上默認已啟用加速數據庫恢復。
相關內容
*請認真填寫需求信息,我們會在24小時內與您取得聯系。