這將很有效地使數據庫脫機,停止所有活動的連接。這是分秒必爭的時刻,我們需要采取行動。當進行到下面的步驟時,請牢記你的RPO和RTO。
(3) 備份事務日志
一個好的數據庫管理員應該知道當災難來臨時,首先要做的是備份事務日志 – 假設你的數據庫被設置成全數據庫備份。這是為了確保在上次備份之后你還保存所有活動的事務。在我們的場景中,由于上次的備份 – 全備份,在這個例子中 – 發生于早上6:00。
BACKUP LOG NorthwindTO DISK = N'D:\DBBackup\NorthwindBackupLog.trn'
WITH NAME = N'Transaction Log Backup'
, DESCRIPTION = 'Getting everything to current point in time.',
STATS = 10
GO
(4)還原數據庫到一個已知的良好時間點
現在,任何用戶意外地刪除一張表或者在數據庫上造成一些破壞后都不會立即告訴你。有時候,你可能需要自己深入挖掘它,但是這需要花很多時間。由于我們想讓數據庫盡快地聯機,所以我們假設一個眾所周知的良好時間點,并且讓發掘在稍后的時間里進行。在下面的腳本中,我將選擇在我的STOPAT參數中將早上 10:42設置成已知的良好時間點,一次達到展示的目的。
FROM DISK = N'D:\DBBackup\NorthwindBackup.bak'
WITH NORECOVERY, RESTRICTED_USER
GO
RESTORE LOG Northwind
FROM DISK = N'D:\DBBackup\NorthwindBackupLog.trn'
WITH RESTRICTED_USER,
STOPAT = '2008-09-23 10:42:44.00', RECOVERY
-- use a "known good" point in time
GO
雖然我們已經把數據庫恢復到一個已知的良好時間點,但是我們并沒有知道我們實際上到底失去了多少數據。我們需要找出在執行DROP TABLE語句之前執行最后的一個INSERT語句的準確時間,這樣我們才能恢復盡可能多的數據。但是由于我們需要盡可能快地使數據庫聯機,所以我們不想在數據庫上直接做這些。這正證明了接下來的步驟是有價值的。
你可以通過執行一個針對它的查詢來驗證刪除的表是否已經恢復。
SELECT *FROM Northwind.dbo.[Order Details]
GO
(5)創建一個恢復點的快照
我們將創建一個還原數據庫的數據庫快照,以此來做進一步的處理。這個數據庫快照將是把數據恢復到執行DROP TABLE語句之前的準確時間的參考。
文章來源于領測軟件測試網 http://www.kjueaiud.com/