SQLSERVER 日誌恢復
有時開發過程中由於不小心或者程序出現錯誤導致錯誤刪除數據,或者由於計算機以外引起數據遭到破壞,這時候可以採用日誌進行恢復。
下面我們以爲數據庫HIS_YB名稱爲例子說明如何利用數據庫日誌進行數據恢復工作。
注意SQL SERVER7 的TRUNCATE LOG ON CHECKPOINT屬性設置TRUE 或者SQLSERVER2000設置爲簡單模式,
SQLSERVER不增長日誌,那麼就無法利用日誌進行恢復了。下面我詳細闡述如何利用日誌進行數據恢復。
1、假設數據庫的名稱爲HIS_YB,備份數據庫/日誌時間分別如下:
┌───────────┬───────────────┬─────────────┐
│ 備份時間 │事件(EVENT) │ 備份名稱(NAME) │
├───────────┼───────────────┼─────────────┤
│2005-12-21 08:00:00 │Backup database his_yb │ c:/his_yb2108.bak │
├───────────┼───────────────┼─────────────┤
│2005-12-21 10:00:00 │Backup log his_yb to │ c:/his_yb2110.log │
├───────────┼───────────────┼─────────────┤
│2005-12-21 12:00:00 │Backup log his_yb to │ c:/his_yb2112.log │
├───────────┼───────────────┼─────────────┤
│2005-12-21 14:00:00 │Backup database his_yb │ c:/his_yb2114.bak │
├───────────┼───────────────┼─────────────┤
│2005-12-21 16:00:00 │Backup log his_yb to │ c:/his_yb2116.log │
├───────────┼───────────────┼─────────────┤
│2005-12-21 18:00:00 │Backup log his_yb to │ c:/his_yb2118.log │
├───────────┼───────────────┼─────────────┤
│2005-12-21 20:00:00 │failure 錯誤操作,數據損壞 │ c:/his_yb2120.log │
└───────────┴───────────────┴─────────────┘
2、利用備份His_yb2108.bak恢復數據到19點鐘
--利用完全備份恢復數據
restore database his_yb from disk=’c:/his_yb2108.bak’
with norecovery,
MOVE ’his_yb_data’ TO ’c:/his_yb.mdf’,
MOVE ’his_yb_Log’ TO ’c:/his_yb.ldf’
go
--依次恢復日誌
--恢復日誌
restore log his_yb from disk=’c:/his_yb2110.log’
WITH norecovery
go
restore log his_yb from disk=’c:/his_yb2112.log’
WITH norecovery
go
restore log his_yb from disk=’c:/his_yb2116.log’
WITH norecovery
go
restore log his_yb from disk=’c:/his_yb2118.log’
WITH norecovery
go
restore log his_yb from disk=’c:/his_yb2120.log’
with recovery, stopat=’2005-12-21 19:00:00.000’
go
3、利用最近的數據庫進行恢復
--利用完全備份恢復數據
restore database his_yb from disk=’c:/his_yb2114.bak’
with norecovery,
MOVE ’his_yb_data’ TO ’c:/his_yb.mdf’,
MOVE ’his_yb_Log’ TO ’c:/his_yb.ldf’
--依次恢復日誌
go
restore log his_yb from disk=’c:/his_yb2116.log’
WITH norecovery
go
restore log his_yb from disk=’c:/his_yb2118.log’
WITH norecovery
go
restore log his_yb from disk=’c:/his_yb2120.log’
with recovery, stopat=’2005-12-21 19:00:00.000’
go
4、恢復到12點,可以利用最早的備份恢復
--利用完全備份恢復數據
restore database his_yb from disk=’c:/his_yb2108.bak’
with norecovery,
MOVE ’his_yb_data’ TO ’c:/his_yb.mdf’,
MOVE ’his_yb_Log’ TO ’c:/his_yb.ldf’
go
--依次恢復日誌
--恢復日誌
restore log his_yb from disk=’c:/his_yb2110.log’
WITH recovery
注意:利用日誌恢復的前提是在期間沒有使用shrink過日誌或者數據庫。
SQLSERVER 日誌恢復
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
sql語法、關係建模
死瘦宅
2019-02-24 22:35:22
MySQL 事務、函數、觸發器、數據庫備份、權限管理
死瘦宅
2019-02-24 22:35:12
MongoDB索引優化詳解
geekpy
2019-02-24 14:20:06
Sql server中一些Select檢索高級用法
wbzjacky
2019-02-24 13:12:37
如何釋放已刪除的InnoDB磁盤空間
lvrenX
2019-02-24 13:04:33
將frm,myi,myd文件打包成sql文件
jason1982
2019-02-24 12:57:22
某熊的技術之路指北 ☯
王下邀月熊_Chevalier
2019-02-23 16:23:03
安裝SQL數據庫之一些常見故障
179390988
2019-02-23 14:05:54
安裝SQL數據庫之補丁安裝常見問題
179390988
2019-02-23 14:05:54
PL/SQL 取幾段查詢結果的交集, 查詢費用報表的條件(R12.1.1)所對應的費用報表規則
tkchw4
2019-02-23 14:05:35
oracle em啓動
huchazsu
2019-02-23 14:01:49
oracle 啓動歸檔模式
huchazsu
2019-02-23 14:01:14
24小時熱門文章