現在數據庫已經重新聯機并且刪除的表已經恢復。雖然現在每個人都很開心,但是作為數據庫管理員,我們的工作不能就此止步。記住我們仍然需要恢復從已知良好時間點到執行DROP TABLE命令之前的缺失數據。這是我們能夠恢復盡可能多的數據的唯一途徑。盡管我們可以用一些第三方工具來讀取事務日志和通過重放這些事務來恢復數據,但是絕大多數人沒有使用這些工具的奢侈權利。所以我們下一個最好的方法是使用帶有STOPAT選項的RESTORE從句。這可能有些繁瑣,有時也很讓人有壓力,因為一個錯誤會讓你陷入重復地執行整個過程的狀態。我們所需要做的就是找出我們做備份的時間,直到事務日志備份結束。在我們的場景中,上次的備份在早上6:00,而你的已知良好時間點在早上10:42.44。因此,你可以從早上10:42.44開始執行帶有STOPAT選項的RESTORE命令,并且把STOPAT時間值改成可能一秒。如果你不是很確定上次備份發生的時間,你可以一直查詢MSDB數據庫。
SELECT *
FROM msdb.dbo.backupset AS a
INNER JOIN msdb.dbo.backupmediafamily AS b
ON a.media_set_id = b.media_set_id
WHERE database_name = 'Northwind'
ORDER BY backup_finish_date
請注意backup_finish_date和type欄,因為這些欄將會讓你知道什么時候你需要考慮RESTORE命令中的STOPAT值。
(7)用不同的名稱恢復另一個損壞數據庫的副本以便于研究
用不同的名稱來還愿損壞數據庫的另一個副本可以讓我們致力于數據的還原,而不用擔心可用性,這是因為我們已經成功建立一個生產數據庫。你只要確定你為恢復數據庫選擇了不同的名稱和數據庫文件位置,或者你可以結束損壞已經建立的數據庫。我們將重復步驟四所做的,但是在這里使用不同的名稱和數據文件位置。
RESTORE DATABASE Northwind_recover
FROM DISK = N'D:\DBBackup\NorthwindBackup.bak'
WITH MOVE N'Northwind' TO N'D:\DBBackup\NorthwindData_recover.mdf',
MOVE N'Northwind_Log' TO N'D:\DBBackup\NorthwindLog_recover.ldf',
STANDBY = N'D:\DBBackup\Northwind_UNDO.bak',
STATS = 10
GO
RESTORE LOG Northwind_recover
FROM DISK = N'D:\DBBackup\NorthwindBackupLog.trn'
WITH STANDBY = N'D:\DBBackup\Northwind_UNDO.bak',
STATS = 10, STOPAT = '2008-09-23 10:42:44.00'
GO
記錄你的STOPAT參數值,因為這將是你在這個過程中使用到的最關鍵的參數。由于我們只是重復了步驟四的過程,我們肯定知道這個時候還沒有執行DROP TABLE命令。
文章來源于領測軟件測試網 http://www.kjueaiud.com/