還原資料庫到指定時間點
GPS平臺、網站建設、軟體開發、系統運維,找森大網路科技!
https://cnsendnet.taobao.com
來自森大科技官方部落格
http://www.cnsendblog.com/index.php/?p=1719
警告:如果試圖恢復客戶的資料庫到指定時間點,千萬不能直接在客戶伺服器上進行恢復操作,以免造成嚴重後果。而應該把當前客戶資料庫做個完整備份,把.bak檔案拷貝到本地,還原到本地進行操作。資料恢復後,再想辦法把相應資料匯入客戶資料庫。
一、SQL Server可使用事務日誌恢復到指定時間點。
1.1 這個恢復需要有兩個前提條件:
1. 至少有一個誤刪除之前的資料庫完全備份。
2. 資料庫的恢復模式(Recovery mode)是“完整(Full)”。
針對這兩個前提條件,會有三種情況:
情況一:如果這兩個前提條件都存在,通過SQL語句只需三步就能恢復,無需藉助第三方工具。
情況二:如果第1個前提條件不存在,第2個前提條件存在,需要藉助第三方工具。
情況三:如果第2個前提條件不存在,無法恢復。所以,一定要將資料庫恢復模式設定為“完整(Full)”。
1.2 檢視資料庫的恢復模式
--資料庫恢復模式有三種:
--1:FULL(完整)、2:BULK_LOGGED(大容量日誌)、3:SIMPLE(簡單)
--檢視資料庫的恢復模式
SELECT name,recovery_model
FROM sys.databases
WHERE name = 'MyTestDB'
1.3 當恢復模式為 SIMPLE 時,不允許使用 BACKUP LOG 語句
二、首先做了一次完整備份,然後依次做了2次事務日誌備份,現在需要還原資料庫到第2次誤刪資料後的時間點。
三、如果沒有之前的(歷史)事務日誌備份檔案,如何進行資料恢復?
3.1 結論:如果某資料庫有過2次事務日誌備份,如果要恢復第2次誤刪的資料,但是沒有第1次事務日誌備份檔案,那麼需要一個第1次事務日誌備份後的完整備份檔案。
四、錯誤案例
4.1 如果是在伺服器A上誤刪了資料,如果把誤刪後的資料庫備份檔案還原到伺服器B上來,然後在伺服器B上備份事務日誌檔案進行資料恢復,我發現這樣會報錯,而如果把伺服器A的資料庫檔案(.mdf和.ldf檔案)拷貝至伺服器B,然後在伺服器B上備份事務日誌檔案再做資料恢復,就不會有問題。
4.2發現把另一臺伺服器上的資料庫備份檔案還原到本地後,在本地執行backup log POMDB to Disk='D:Res\POMDB.log' with init 得到的日誌檔案很小,沒什麼用。而應該在伺服器上備份,而且,我還發現在伺服器上第一次備份得到的.log檔案比較大,第2次備份得到的檔案就很小了,原因是第二次備份是在第一次備份的基礎之上備份的
'
4.3 指定的還原時間大於事務日誌備份時間,出現如下提示,資料庫還是保持為還原狀態(即資料庫圖示上出現【正在還原】字樣)
4.4 如果依次進行了2次事務日誌備份,無法使用第2次的事務日誌備份檔案恢復第1次備份之前誤刪的資料
4.5 也無法使用第2次的事務日誌備份檔案恢復第2次備份之前誤刪的資料
五、關於事務日誌備份檔案的LSN
5.1 開啟第1次備份的事務日誌備份檔案
5.2 開啟第2次備份的事務日誌備份檔案,發現LSN是接著上一次備份來的。
5.3 結論:如何要恢復第2次誤刪的資料,必須先還原第1次的事務日誌備份檔案,然後再還原第2次的事務日誌備份檔案。
GPS平臺、網站建設、軟體開發、系統運維,找森大網路科技!
https://cnsendnet.taobao.com
來自森大科技官方部落格
http://www.cnsendblog.com/index.php/?p=1719