還原數據庫的經典做法說明 所有的示例均假定已執行了完整數據庫備份。
A. 還原完整數據庫
說明 MyNwind 數據庫僅供舉例說明。
下例顯示還原完整數據庫備份。
RESTORE DATABASE MyNwind FROM MyNwind_1
B. 還原完整數據庫備份和差異備份 下例還原完整數據庫備份后還原差異備份。另外,下例還說明如何還原媒體上的另一個備份集。差異備份追加到包含完整數據庫備份的備份設備上。
RESTORE DATABASE MyNwind FROM MyNwind_1 WITH NORECOVERY RESTORE DATABASE MyNwind FROM MyNwind_1 WITH FILE = 2
C. 使用 RESTART 語法還原數據庫 下例使用 RESTART 選項重新啟動因服務器電源故障而中斷的 RESTORE 操作。
-- This database RESTORE halted prematurely due to power failure. RESTORE DATABASE MyNwind FROM MyNwind_1 -- Here is the RESTORE RESTART operation. RESTORE DATABASE MyNwind FROM MyNwind_1 WITH RESTART
D. 還原數據庫并移動文件 下例還原完整數據庫和事務日志,并將已還原的數據庫移動到 C:\Program Files\Microsoft SQL Server\MSSQL\Data 目錄下。
RESTORE DATABASE MyNwind FROM MyNwind_1 WITH NORECOVERY, MOVE 'MyNwind' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.mdf', MOVE 'MyNwindLog1' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.ldf' RESTORE LOG MyNwind FROM MyNwindLog1 WITH RECOVERY
E. 使用 BACKUP 和 RESTORE 創建數據庫的復本 下例顯示使用 BACKUP 和 RESTORE 語句創建 Northwind 數據庫的復本。MOVE 語句使數據和日志文件還原到指定的位置。RESTORE FILELISTONLY 語句用于確定待還原數據庫內的文件數及名稱。該數據庫的新復本稱為 TestDB。有關更多信息,請參見 RESTORE FILELISTONLY。
BACKUP DATABASE Northwind TO DISK = 'c:\Northwind.bak' RESTORE FILELISTONLY FROM DISK = 'c:\Northwind.bak' RESTORE DATABASE TestDB FROM DISK = 'c:\Northwind.bak' WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf', MOVE 'Northwind_log' TO 'c:\test\testdb.ldf' GO
F. 使用 STOPAT 語法還原到即時點和使用多個設備進行還原 下例將數據庫還原到其在 1998 年 4 月 15 日中午 12 點時的狀態,并顯示涉及多個日志和多個備份設備的還原操作。
RESTORE DATABASE MyNwind FROM MyNwind_1, MyNwind_2 WITH NORECOVERY RESTORE LOG MyNwind FROM MyNwindLog1 WITH NORECOVERY RESTORE LOG MyNwind FROM MyNwindLog2 WITH RECOVERY, STOPAT = 'Apr 15, 1998 12:00 AM'
G. 使用 TAPE 語法還原 下例顯示從 TAPE 備份設備還原完整數據庫備份。
RESTORE DATABASE MyNwind FROM TAPE = '\\.\tape0'
H. 使用 FILE 和 FILEGROUP 語法還原 下例還原一個包含兩個文件、一個文件組和一個事務日志的數據庫。
RESTORE DATABASE MyNwind FILE = 'MyNwind_data_1', FILE = 'MyNwind_data_2', FILEGROUP = 'new_customers' FROM MyNwind_1 WITH NORECOVERY -- Restore the log backup. RESTORE LOG MyNwind FROM MyNwindLog1
I. 將事務日志還原到標記處 下例顯示將事務日志還原到名為"RoyaltyUpdate"的標記處。
BEGIN TRANSACTION RoyaltyUpdate WITH MARK 'Update royalty values' GO USE pubs GO UPDATE roysched SET royalty = royalty * 1.10 WHERE title_id LIKE 'PC%' GO COMMIT TRANSACTION RoyaltyUpdate GO --Time passes. Regular database --and log backups are taken. --An error occurs. USE master GO
RESTORE DATABASE pubs FROM Pubs1 WITH FILE = 3, NORECOVERY GO RESTORE LOG pubs FROM Pubs1 WITH FILE = 4, STOPATMARK = 'RoyaltyUpdate'
呵呵,俺先在這兒拋幾塊磚頭,有玉的盡管拿來:)
|