執行完整的資料庫還原 (完整復原模式)
在完整資料庫還原中,目標是還原整個資料庫。在還原期間,整個資料庫為離線狀態。在讓資料庫的任何部分上線之前,所有的資料都必須復原到一致的位置;此時資料庫的所有部分都會回到相同的時間點,而且沒有未認可的交易存在。
在完整復原模式下,可以將資料庫還原到特定的時間點。上述時間點可以是最近的可用備份、特定的日期和時間,或標示的交易。
安全性注意事項: |
---|
建議您不要附加或還原來源不明或來源不受信任的資料庫。這些資料庫可能包含惡意程式碼,因此可能執行非預期的 Transact-SQL 程式碼,或是修改結構描述或實體資料庫結構而造成錯誤。使用來源不明或來源不受信任的資料庫之前,請先在非實際伺服器中的資料庫上執行 DBCC CHECKDB,同時檢查資料庫中的程式碼,例如預存程序或其他使用者自訂程式碼。 |
還原完整資料庫
一般而言,將資料庫復原至失敗點的作業,包含下列基本步驟:
- 備份使用中的交易記錄檔 (即所謂的記錄檔結尾)。這會建立結尾記錄備份。如果沒有使用中的交易記錄,就會遺失該部分記錄中的所有交易。
重要事項: 在大量記錄復原模式下,備份包含大量記錄作業的記錄時,需要存取資料庫中的所有資料檔案。如果無法存取資料檔案,就無法備份交易記錄。在這種情況下,您必須手動重做最近一次備份記錄之後進行的所有變更。 - 還原最新的完整資料庫備份,但不復原資料庫 (RESTORE DATABASE database_name FROM <backup_device> WITH NORECOVERY)。
- 如果有差異備份存在,請還原最新的備份,但是不要復原資料庫 (RESTORE DATABASE database_name WITH NORECOVERY)。
- 從剛才還原的備份之後所建立的第一個交易記錄備份開始,依順序以 NORECOVERY 還原記錄。
- 復原資料庫 (RESTORE DATABASE database_name WITH RECOVERY)。或者,這個步驟也可以合併在還原最後的記錄備份。
- 完整資料庫還原通常可以復原至記錄備份中的某個時間點或標示的交易。然而,在大量記錄復原模式下,如果記錄備份包含大量記錄的變更,則無法進行時間點復原。如需詳細資訊,請參閱<將資料庫還原到備份中的時間點>。
當您要完全還原資料庫時,應該使用單一還原順序。下列範例針對要將資料庫還原至失敗時間點的完整資料庫還原實例,說明其還原順序中的重要選項。還原順序包含一或多個還原作業,會在一或多個還原階段中移動資料。會省略與這個檔案還原無關的語法和詳細資料。
資料庫會被還原並向前復原。資料庫差異可用來減少向前復原的時間。這個還原順序的目的是要避免工作遺失;最後還原的備份會是結尾記錄備份。
還原順序的基本 RESTORE 語法為:
- RESTORE DATABASE <database> FROM full database backup WITH NORECOVERY;
- RESTORE DATABASE <database> FROM full_differential_backup WITH NORECOVERY;
- RESTORE LOG <database> FROM <log_backup> WITH NORECOVERY;
針對其他每個記錄備份重複此還原記錄步驟。 - RESTORE DATABASE <database> WITH RECOVERY;
範例
下列範例已在備份 AdventureWorks
範例資料庫之前,將該資料庫設定為使用完整復原模式。此範例會建立 AdventureWorks
資料庫的結尾記錄備份。接下來,此範例會還原較早的完整資料庫備份和記錄備份,然後才還原結尾記錄備份。此範例會在一個不同的最後步驟中復原資料庫。
附註: |
---|
此範例使用<完整資料庫備份>的「在完整復原模式下使用資料庫備份」一節中所建立的資料庫備份和記錄備份。 |
此範例會從設定復原模式為 FULL
的 ALTER DATABASE 陳述式開始進行。
USE master;
--Make sure the database is using the full recovery model.
ALTER DATABASE AdventureWorks SET RECOVERY FULL;
GO
--Create tail-log backup.
BACKUP LOG AdventureWorks
TO DISK = 'Z:\SQLServerBackups\AdventureWorks.bak''Z:\SQLServerBackups\AdventureWorks.bak'
WITH NORECOVERY; GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
WITH FILE=1,
NORECOVERY;
--Restore the regular log backup (from backup set 2).
RESTORE LOG AdventureWorks
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
WITH FILE=2,
NORECOVERY;
--Restore the tail-log backup (from backup set 3).
RESTORE LOG AdventureWorks
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
WITH FILE=3,
NORECOVERY;
GO
--recover the database:
RESTORE DATABASE AdventureWorks WITH RECOVERY;
GO
復原到失敗點
還原完整資料庫備份
- 如何:還原資料庫備份 (Transact-SQL)
- 如何:還原資料庫備份 (SQL Server Management Studio)
- 如何:從現有的資料庫備份建立新資料庫 (SQL Server Management Studio)
還原差異資料庫備份
還原交易記錄備份
在還原資料備份之後,您必須先還原所有較晚的交易記錄備份,然後再復原資料庫。
使用 SQL Server 管理物件 (SMO) 還原備份
復原至某個時間點
在完整復原模式下,可以將資料庫還原到記錄備份中的特定時間點。時間點可以是特定日期和時間、標示的交易或記錄序號 (LSN)。如需詳細資訊,請參閱<將資料庫還原到備份中的時間點>。
支援舊版 SQL Server 的備份
在 SQL Server 2005 中,您可以還原使用 SQL Server 7.0 版、SQL Server 2000 或 SQL Server 2005 所建立的資料庫備份。但是,SQL Server 2005 無法還原使用 SQL Server 7.0 或 SQL Server 2000 建立的 master、model 及 msdb 備份。另外,包含建立索引作業的 SQL Server 7.0 記錄備份無法還原至 SQL Server 2000 或 SQL Server 2005。
SQL Server 2005 使用與舊版 SQL Server 不同的預設路徑。因此,若要從備份還原在 SQL Server 7.0 或 SQL Server 2000 預設位置中建立的資料庫,就必須使用 MOVE 選項。如需有關新預設路徑的詳細資訊,請參閱<SQL Server 2005 的預設和具名執行個體的檔案位置>。
附註: |
---|
使用 SQL Server 6.5 或舊版建立的資料庫備份,其格式不相容,而且無法在 SQL Server 2005 中還原。如需有關如何將使用 SQL Server 6.5 或舊版建立的資料庫升級至 SQL Server 2005 的詳細資訊,請參閱<複製 SQL Server 6.5 或舊版的資料庫>。 |
請參閱
概念
大量記錄復原模式下的備份
在完整復原模式下備份
差異資料庫備份
完整資料庫備份
縮短還原資料庫時的復原時間
瞭解在 SQL Server 中還原和復原備份的運作方式
使用交易記錄備份
其他資源
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 7 月 17 日 |
|