從日誌中恢復SQL Server資料庫到時間點

2022-03-07 11:50:08 字數 1205 閱讀 8328

db2中可以使得資料庫回覆到指定的時間點,sql server資料庫的recovery model為full 或者bulk copy的時候,是可以從日誌來恢復資料庫的。實際上日誌中記錄的一條一條的transact sql語句,恢復資料庫的時候會redo這些sql語句。

前提條件:mybbs是資料庫test中的乙個表,

資料庫test的recovery model為full,auto close,auto shrink兩個選項未選中。

資料庫test的data files和log files均為預設的自動增長狀態。

a:2004/10/13,16:00進行資料庫備份,backup database test to disk='d:/db/1600.bak' with init

b:2004/10/14,13:00對資料庫進行了update,delete等操作;

c:2004/10/15,18:00使用delete mybbs where id>300時,語句誤寫成delete mybbs,因而刪除了表mybbs中的所有資料。

現在在c點,c點對資料庫進行了誤操作,我們希望資料庫能夠恢復到c之前的狀態,比如恢復到10月15日17:59分的狀態。

要恢復資料庫b點,使用的是a點備分的資料庫1600.bak;而使用的日誌備分是最新的備分1820.logs;因而進行如下操作:

--備份日誌:

backup log test to disk='d:/1820.logs' with init

--恢復資料庫1600.bak,使用with norecovery引數:

restore database test from disk='d:/db/1640.bak' with norecovery

--使用日誌恢復資料庫到10月15日17:59分:

restore log test

from disk='d:/1820.logs' with recovery,stopat='10/15/2004 17:59'

上面的三條transact sql語句的對應過程:

1.恢復資料庫到a點;

2.執行a-b之間的log記錄,把資料庫恢復到b點.

這樣就恢復資料庫到了指定的時間點。如果恢復不成功,可能的原因是:1.未使用正確的備分資料庫;2.資料庫選項選中了auto shrink.

從日誌中恢復SQL Server資料庫

上週有同事對資料庫進行了誤操作,問我可不可以回到前一天的狀態。恢復資料庫的問題以前學db2的時候遇到過,那時我想sql server中應該也會有方法把資料庫恢復到前一天的。我的機器上erp的資料庫日誌從800m增張到了2g,log增長得這麼快,想必是把所有的操作都記錄上了。網上找了幾天的資料,sql...

從日誌中恢復

上週有同事對資料庫進行了誤操作,問我可不可以回到前一天的狀態。恢復資料庫的問題以前學的時候遇到過,那時我想sqlserver中應該也會有方法把資料庫恢復到前一天的。我的機器上erp的資料庫日誌從800m增張到了2g,log增長得這麼快,想必是把所有的操作都記錄上了。網上找了幾天的資料,sqlserv...

sqlserver 恢復模式及避免日誌爆滿的方法

recovery 迴圈日誌,空間自動 不可備份日誌,恢復時僅能恢復到資料庫備份時間點 用於落地資料或測試環境或olap,不推薦用於生產oltp 有時候distribution過大也可置為 recovery bulk logged 常規操作日誌正常記錄,特定操作時僅記錄少量日誌 恢復時特定操作將做回滾...