共用方式為


執行檔案還原 (完整復原模式)

更新: 2006 年 7 月 17 日

顯示藍色資料庫磁碟的圖示本主題僅與在完整或大量載入復原模式下,包含多個檔案或檔案群組的資料庫有關。

檔案還原的目的是還原一或多個損毀的檔案,而不還原整個資料庫。SQL Server 的所有版本全都支援在資料庫離線時還原檔案 (「離線分頁還原」)。SQL Server 2005 Standard Edition、SQL Server 2005 Express Edition 和 SQL Server 2005 Workgroup Edition 僅支援離線還原,而且將檔案還原至主要檔案群組時,資料庫一定要離線。如果資料庫已經離線,SQL Server 2005 Enterprise Edition 就會使用離線還原。

在 SQL Server 2005 Enterprise Edition 中,如果檔案還原期間,資料庫在線上,資料庫就仍然會在線上。在資料庫仍在線上時還原和復原檔案,就稱為*「線上檔案還原」*。

這些檔案還原實例如下:

  • 離線檔案還原
    在離線檔案還原中,還原損毀的檔案或檔案群組時,資料庫會離線。在還原順序結束後,資料庫會恢復上線。
  • 線上檔案還原
    在 SQL Server 2005 Enterprise Edition 中,檔案還原會在資料庫為線上狀態時自動在線上執行。不過,任何內有檔案正在還原的檔案群組都會離線。離線檔案群組中的所有檔案都復原後,檔案群組就會自動回到線上。如需有關線上還原的詳細資訊,請參閱<執行線上還原>。
    ms190710.note(zh-tw,SQL.90).gif附註:
    只有線上檔案群組可以查詢或更新。嘗試存取處於離線狀態的檔案群組 (包括含有正在還原或復原之檔案的檔案群組) 會導致錯誤發生。

如果正在還原的檔案群組為讀取/寫入,則必須在還原最後一個資料或差異備份之後,套用無間斷的記錄備份鏈結。這會將檔案群組向前復原到位於記錄檔內目前使用中記錄上的記錄。復原點通常接近記錄的結尾,但不一定如此。

如果正在還原的檔案群組為唯讀,通常沒有必要套用記錄備份,因此略過。如果是在檔案變成唯讀之後進行的備份,此備份就是要還原的最後一個備份。向前復原會在目標點停止。

還原檔案或檔案群組

從檔案備份和差異檔案備份還原損毀的一或多個檔案

  1. 建立使用中之交易記錄檔的結尾記錄備份。

    如果因為記錄毀損而無法進行,就必須還原整個資料庫。如需有關如何備份交易記錄的詳細資訊,請參閱<建立交易記錄備份>。

    ms190710.note(zh-tw,SQL.90).gif重要事項:
    對於離線檔案還原,一定要在檔案還原之前進行結尾記錄備份。對於線上檔案還原,一定要在檔案還原之後進行記錄備份。為了讓檔案可以復原到與資料庫其餘部分一致的狀態,進行這個記錄備份有其必要。
  2. 從每個損毀檔案的最近一次檔案備份還原該檔案。

  3. 還原每個已還原檔案的最新差異檔案備份 (如果有的話)。

  4. 依序還原交易記錄備份,從包含最舊還原檔案的備份開始,到步驟 1 所建立的結尾記錄備份結束。

    您必須還原在檔案備份之後建立的交易記錄備份,才能讓資料庫恢復一致的狀態。交易記錄備份可以快速地回復執行重做,因為只需套用適用於還原檔案的變更。還原個別檔案比還原整個資料庫更為理想,因為不需複製未受損檔案,便可接著向前復原。不過,仍然需要讀取記錄備份的整個鏈結。

  5. 復原資料庫。

ms190710.note(zh-tw,SQL.90).gif附註:
檔案備份可以用來將資料庫還原至較早的時間點。若要這樣做,您必須還原整個檔案備份組,然後依序還原交易記錄備份,以回到上一次還原的檔案備份結尾之後的目標時間點。如需有關時間點復原的詳細資訊,請參閱<將資料庫還原到備份中的時間點>。

若要還原檔案與檔案群組

進階主題

離線檔案還原的 Transact-SQL 還原順序 (完整復原模式)

檔案還原實例包含複製、向前復原及復原適當資料的單一還原順序。

下列 Transact-SQL 程式碼顯示,檔案還原實例的還原順序中重要的 RESTORE 選項。會省略與這個檔案還原無關的語法和詳細資料。

此範例示範利用 NORECOVERY 來離線還原兩個次要檔案 AB。接下來,範例會以 NORECOVERY 套用這兩個記錄備份,然後再以 RECOVERY 套用結尾記錄備份以進行還原。為了進行離線檔案還原,此範例一開始會讓檔案離線。

--Take the file offline.
ALTER DATABASE database_name MODIFY FILE SET OFFLINE
-- Back up the currently active transaction log.
BACKUP LOG database_name
   TO <tail_log_backup>
   WITH NORECOVERY
GO 
-- Restore the files.
RESTORE DATABASE database_name FILE=<name> 
   FROM <file_backup_of_file_A> 
   WITH NORECOVERY
RESTORE DATABASE database_name FILE=<name> ......
   FROM <file_backup_of_file_B> 
   WITH NORECOVERY
-- Restore the log backups.
RESTORE LOG database_name FROM <log_backup> 
   WITH NORECOVERY
RESTORE LOG database_name FROM <log_backup> 
   WITH NORECOVERY
RESTORE LOG database_name FROM <tail_log_backup> 
   WITH RECOVERY

範例

請參閱

概念

差異備份和新檔案
在檔案群組中放置索引
差異檔案備份
瞭解在 SQL Server 中還原和復原備份的運作方式
利用檔案及檔案群組來管理資料庫的擴展
使用檔案與檔案群組
套用交易記錄備份
備份概觀 (SQL Server)
SQL Server 中的還原和復原概觀

其他資源

設計檔案及檔案群組
相關功能的備份與還原注意事項
RESTORE (Transact-SQL)
將資料庫還原到備份中的時間點
使用 SQL Server 資料庫的還原順序

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 7 月 17 日

變更的內容:
  • 將先前<在完整復原模式下還原實例>主題中的檔案還原簡介一併加入。