執行線上還原

只有在 SQL Server 2005 Enterprise Edition 和更新的版本中才支援線上還原。在此版本中,檔案、分頁或分次還原預設都是在線上進行。

 此主題僅與包含多個檔案或檔案群組 (若是簡單復原模式,則只有唯讀檔案群組) 的資料庫有關。

在資料庫還在線上時還原資料,就稱之為「線上還原」。即使有一或多個次要檔案群組離線,只要主要檔案群組還在線上,就將資料庫視為在線上。當資料庫在線上時,您可以在任何復原模式下還原離線的檔案。當資料庫在線上時,您也可以在完整復原模式下還原頁面。

[!附註]

線上還原會在 SQL Server 2005 Enterprise Edition 及更新的版本中自動發生,不需要任何使用者動作。如果您不想要使用線上還原,則可以先使資料庫離線,再啟動還原。如需詳細資訊,請參閱本主題稍後的「使資料庫或檔案離線」。

在線上檔案還原期間,任何即將還原的檔案及其檔案群組都會離線。當線上還原啟動時,如果這其中還有任何檔案在線上,第一個還原陳述式就會讓檔案的檔案群組離線。相反地,在線上分頁還原期間,只有頁面會離線。

每個線上還原實例都包括下列基本步驟:

  1. 還原資料。

  2. 針對最後一次記錄還原,使用 WITH RECOVERY 來還原記錄。這會使還原的資料上線。

有時候會因為回復所需的資料在啟動期間離線,而無法回復未認可的交易。在此情況下,將會延遲交易。如需詳細資訊,請參閱<延遲交易>。

[!附註]

如果資料庫目前正在使用大量記錄復原模式,建議您先切換到完整復原模式,再啟動線上還原。如需詳細資訊,請參閱<從完整或大量記錄復原模式進行切換的考量>。

重要事項重要事項

如果備份是在附加至伺服器的多個裝置上進行,則在執行線上還原時,必須有相同數目的裝置可用。

線上還原的記錄備份

在線上還原中,復原點就是還原的資料變成離線或最後一次設為唯讀的時間點。能夠重建及包含此復原點的交易記錄備份,必須完整備妥。一般而言,在該時間點後必須有記錄備份,才能涵蓋檔案的復原點。唯一的例外就是從資料變成唯讀後建立的資料備份中,對唯讀資料所進行的線上還原。在這種情況下,您不需要有記錄備份。

一般而言,即使在還原順序啟動之後,您還是可以在資料庫仍在線上時進行交易記錄備份。最後記錄備份的時間點取決於要還原之檔案的屬性:

  • 對於線上唯讀檔案,您可以在第一個還原順序之前或當中進行復原所需的最後一次記錄備份。如果是在檔案群組成為唯讀之後進行資料或差異備份,唯讀檔案群組就可以不需要記錄備份。

    [!附註]

    上述資訊也同樣適用於每個離線檔案。

  • 比較特殊的情況是,在發出第一個還原陳述式時仍在線上,但之後因該還原陳述式而自動離線的讀取/寫入檔案。在此情況下,您必須在第一個「還原順序」(此順序中包含一或多個可還原、向前復原及復原資料的 RESTORE 陳述式) 期間進行記錄備份。一般而言,必須在還原所有完整備份之後,而且在復原資料之前進行這個記錄備份。不過,如果特定的檔案群組有多個檔案備份,則記錄備份最晚的時間點是在檔案群組離線之後的時間。這個資料還原後的記錄備份會擷取檔案離線時的時間點。資料還原後的記錄備份是必要的,因為 SQL Server Database Engine 無法使用線上記錄進行線上還原。

    [!附註]

    此外,您也可以在還原順序之前手動使檔案離線。如需詳細資訊,請參閱本主題稍後的「使資料庫或檔案離線」。

使資料庫或檔案離線

如果您不想要使用線上還原,則可以使用下列其中一個方法先讓資料庫離線,再來啟動還原順序:

  • 在任何復原模式下,您可以使用下列 ALTER DATABASE 陳述式,讓資料庫離線:

    ALTER DATABASE <database_name> SET OFFLINE

  • 或者,也可以在完整復原模式下強制檔案或分頁還原離線,方法是使用下列 BACKUP LOG 陳述式,將資料庫置於正在還原狀態:

    BACKUP LOG <database_name> WITH NORECOVERY

只要資料庫仍然離線,所有的還原就都是離線還原。