還原和復原概觀 (SQL Server)

適用于:yesSQL Server (所有支援的版本)

若要從失敗復原SQL Server資料庫,資料庫管理員必須以邏輯正確且有意義的還原順序還原一組SQL Server備份。 SQL Server還原和復原支援從整個資料庫、資料檔案或資料頁面的備份還原資料,如下所示:

  • 資料庫 ( 「完整資料庫還原」 (Complete database restore))

    將會還原並復原整個資料庫,且在還原與復原作業期間,資料庫會離線。

  • 資料檔 ( 「檔案還原」 )

    還原與復原一個資料檔或一組檔案。 在檔案還原過程中,包含該檔案的檔案群組會在還原的持續時間內自動離線。 任何存取離線檔案群組的嘗試都會產生錯誤。

  • 資料頁 ( 「分頁還原」 (Page restore))

    在完整復原模式或大量記錄復原模式下,您可以還原個別頁面。 不論檔案群組的數目為何,在任何資料庫上都可以執行分頁還原。

SQL Server備份和還原在所有支援的作業系統上運作。 如需支援的作業系統詳細資訊,請參閱 安裝 SQL Server 2016 的硬體與軟體需求。 如需舊版 SQL Server 備份支援的相關資訊,請參閱RESTORE (Transact-SQL) 的一節。

還原案例概觀

SQL Server中的還原案例是從一或多個備份還原資料,然後復原資料庫的程式。 支援的還原案例取決於資料庫的復原模式和SQL Server版本。

下表介紹各種復原模式可能支援的還原實例。

中的 在簡單復原模式下 在完整/大量記錄復原模式下
完整資料庫還原 這是基本還原策略。 完整資料庫還原可能只包括還原和復原完整資料庫備份。 此外,完整資料庫還原也可能包括還原完整資料庫備份,接著再還原和復原差異備份。

如需詳細資訊,請參閱 完整資料庫還原 (簡單復原模式)
這是基本還原策略。 完整資料庫還原包括還原完整資料庫備份和選用的差異備份 (如果有的話),然後依照順序還原所有後續的記錄備份。 復原最後一個記錄備份,並且加以還原 (RESTORE WITH RECOVERY),即完成完整資料庫還原。

如需詳細資訊,請參閱 完整復原模式 (完整復原模式的完整資料庫還原)
File restore * 還原一個或多個損毀的唯讀檔案,而不還原整個資料庫。 唯有當資料庫至少有一個唯讀檔案群組時,才能使用檔案還原。 還原一個或多個檔案,而不還原整個資料庫。 當資料庫離線或在某些版本的 SQL Server 中,資料庫仍會保持線上狀態時,可以執行檔案還原。 在檔案還原期間,包含正在還原中之檔案的檔案群組一律為離線狀態。
分頁還原 不適用 還原一個或多個損毀的頁面。 當資料庫離線或在某些版本的SQL Server中,資料庫仍會保持上線狀態時,可以執行分頁還原。 在分頁還原期間,正在還原中的頁面一律為離線狀態。

未中斷的記錄備份鏈結必須可用 (直到目前記錄檔),且必須全部套用,才能使分頁與目前記錄檔保持一樣新。

如需詳細資訊,請參閱還原頁面 (SQL Server)
分次還原 * 在檔案群組層級上,從主要檔案群組開始,接著是所有讀取/寫入次要檔案群組,分階段還原和復原資料庫。 從主要檔案群組開始,在檔案群組層級上分階段還原和復原資料庫。

如需詳細資訊,請參閱分次還原 (SQL Server)

* 只有 Enterprise Edition 支援線上還原。

還原資料庫的步驟

若要執行檔案還原,資料庫引擎會執行兩個步驟:

  • 建立任何遺失的資料庫檔案。

  • 將資料從備份裝置複製到資料庫檔案。

若要執行資料庫還原,資料庫引擎會執行三個步驟:

  • 建立資料庫和交易記錄檔 (若尚未存在的話)。

  • 從資料庫的備份媒體將所有資料、記錄和索引頁複製到資料庫檔案。

  • 在所謂的復原流程中套用交易記錄。

不論資料的還原方式為何,在復原資料庫之前,SQL Server 資料庫引擎保證整個資料庫在邏輯上保持一致。 例如,如果您要還原檔案,除非您已經將其向前復原到足以和資料庫保持一致的程度,否則無法加以復原並使其回到線上。

檔案或分頁還原的優點

還原與復原檔案或頁面 (而非整個資料庫) 可提供下列優點:

  • 還原較少的資料,可縮短複製和復原資料所需的時間。

  • 在SQL Server還原檔案或頁面時,可能會允許資料庫中的其他資料在還原作業期間保持線上狀態。

復原和交易記錄

在大部分的還原案例中,必須套用交易記錄備份,並允許SQL Server 資料庫引擎執行復原程式,讓資料庫上線。 復原是SQL Server讓每個資料庫以交易一致或清除狀態啟動的程式。

在容錯移轉或其他不正常關機的情況下,資料庫可能會停留在緩衝區快取中有些修改尚未寫入資料檔,且未完成交易已在資料檔中作了一些修改的狀態。 啟動SQL Server實例時,它會根據最後一個資料庫檢查點執行每個資料庫的復原,其中包含三個階段:

  • 分析階段會分析交易記錄來判斷最後一個檢查點為何,並建立中途分頁資料表 (Dirty Page Table,DPT) 和使用中交易資料表 (Active Transaction Table,ATT)。 DPT 包含資料庫關機時已變更的分頁記錄。 ATT 包含資料庫不正常關機時仍在使用中的交易記錄。

  • 重做階段會向前復原資料庫關機時,記錄中每個已記錄且可能尚未寫入資料檔的修改內容。 其會在 DPT 中找到成功進行全資料庫復原時所需要的最小記錄序號 (minLSN),並標記所有中途分頁上所需重做作業的開始。 在這個階段,SQL Server 資料庫引擎寫入屬於已認可交易之所有已變更頁面的磁片。

  • 復原階段會復原 ATT 中找到的未完成交易,確保資料庫的完整性。 回復之後,資料庫會上線,而且不再有交易記錄備份可以套用到資料庫。

每個資料庫復原階段進度的相關資訊都會記錄在錯誤記錄SQL Server中。 資料庫復原進度也可以使用擴充事件進行追蹤。 如需詳細資訊,請參閱部落格文章資料庫復原進度的新擴充事件

注意

針對分次還原案例,如果唯讀檔案群組從建立檔案備份以前已經是唯讀,就不需要將記錄備份套用到檔案群組,且檔案還原會跳過它。

注意

若要將 enterpirse 環境中的資料庫可用性最大化,SQL Server Enterprise Edition 可以在重做階段之後讓資料庫上線,同時復原階段仍在執行中。 這稱為「快速復原」。

復原模式和支援的還原作業

資料庫可用的還原作業,取決於其復原模式。 下表摘要說明每一種復原模式是否支援給定的還原實例,及其支援的範圍。

還原作業 完整復原模式 大量記錄復原模式 簡單復原模式
資料復原 完整復原 (如果有記錄可以使用)。 有損失部分資料的風險。 自上次完整或差異備份之後的任何資料,都會遺失。
時間點還原 記錄備份涵蓋的任何時間。 如果記錄備份含有大量記錄變更,則不允許。 不支援。
File restore * 完整支援。 有時。** 僅適用於唯讀的次要檔案。
Page restore * 完整支援。 有時。** 無。
分次 (檔案群組-等級) 還原 * 完整支援。 有時。** 僅適用於唯讀的次要檔案。

*僅適用于 SQL Server Enterprise 版

** 如需了解必要條件,請參閱此主題稍後的 簡單復原模式下的還原限制

重要

不論資料庫的復原模式為何,SQL Server備份都無法還原到比建立備份版本還舊版本的SQL Server 資料庫引擎版本。

簡單復原模式下的還原案例

簡單復原模式在還原作業上具有下列限制:

如果這些限制中有任何一項不適合您的復原需要,即建議您考慮使用完整復原模式。 如需詳細資訊,請參閱備份 概觀 (SQL Server)

重要

不論資料庫的復原模式為何,SQL Server備份都無法由比建立備份版本還舊的SQL Server版本還原。

大量記錄復原模式下的還原

本節討論大量記錄復原模式的特殊還原考量,此為專門用做完整復原模式的補充。

注意

如需大量記錄復原模式的簡介,請參閱交易記錄 (SQL Server)

一般而言,大量記錄復原模式與完整復原模式類似,針對完整復原模式所描述的資訊也同時適用於兩者。 但是,大量記錄復原模式會影響時間點復原與線上還原。

時間點復原的限制

如果大量記錄復原模式下建立的記錄備份包含大量記錄變更,就不允許時間點復原。 嘗試對包含大量變更的記錄備份執行時間點復原將會造成還原作業失敗。

對線上還原的限制

線上還原順序只有在符合下列條件時才能運作:

  • 必須在開始還原順序之前完成所有必要的記錄備份。

  • 必須在開始線上還原順序之前先備份大量變更。

  • 如果資料庫中存在大量變更,則所有的檔案都必須在線上,或是無用。 (這表示它不再是資料庫的一部分)。

如果沒有符合這些條件,線上還原順序就會失敗。

注意

我們建議您先切換到完整復原模式,再開始線上還原。 如需詳細資訊,請參閱 (SQL Server) 復原模式

如需有關如何執行線上還原的資訊,請參閱線上還原 (SQL Server)

Database Recovery Advisor (SQL Server Management Studio)

Database Recovery Advisor 有助於建構實作最佳化正確還原順序的還原計畫。 我們已經處理了客戶所要求的許多已知資料庫還原問題和增強功能。 Database Recovery Advisor 導入的主要增強功能包括:

  • 還原計劃演算法: 用來建構還原計劃的演算法已大幅改善,特別是針對複雜的還原案例。 許多邊緣案例,包括時間點還原中的筆跡案例,會比舊版的SQL Server更有效率地處理。

  • 時間點還原:資料庫復原建議程式可大幅簡化資料庫還原至指定時間點。 視覺備份時間表大幅增強時間點還原的支援。 這個視覺化時間表可讓您識別當做還原資料庫之目標復原點的可行時間點。 時間表可加快周遊分岔復原路徑 (跨多個復原分岔之路徑)。 特定時間點還原計畫會自動包含與還原至目標時間點 (日期和時間) 有關的備份。 如需詳細資訊,請參閱將SQL Server資料庫還原至時間點, (完整復原模式)

如需詳細資訊,請參閱 Database Recovery 建議程式,請參閱下列SQL Server管理性部落格:

加速資料庫復原

加速資料庫復原從 2019 SQL Server 2019 (15.x) 和 Azure SQL Database 開始提供。 加速資料庫復原可藉由重新設計SQL Server 資料庫引擎復原程式,大幅改善資料庫可用性,特別是在長時間執行的交易中。 啟用加速資料庫復原的資料庫,其在容錯移轉或其他非正常關機之後完成復原流程的速度會大幅加快。 啟用時,加速資料庫復原也會大幅加快完成復原已取消長時間執行交易的速度。

您可以使用下列語法,在 SQL Server 2019 (15.x) 上啟用每個資料庫的加速資料庫復原:

ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;

注意

預設會在 Azure SQL Database 上啟用加速資料庫復原。

另請參閱

Backup Overview (SQL Server)
交易記錄 (SQL Server)
SQL Server 交易記錄架構與管理指南
SQL Server 資料庫的備份與還原
套用交易記錄備份 (SQL Server)