關於誤刪數據表中數據的恢復實例--學習筆記

/*-----------------------------------關於誤刪數據表中的數據恢復方法演練-----------------------------------*/

--如果當前數據庫中存在‘test’表名,則刪除
IF OBJECT_ID('test') IS NOT NULL  
    DROP TABLE testRestore 
GO 

--使數據庫testdb 處於當前狀態
use testdb
go

--創建表testrestore
CREATE TABLE testRestore 
    ( 
      id INT IDENTITY(1, 1) , 
      NAME VARCHAR(50) 
    )

--插入測試數據:     
INSERT INTO testRestore(Name) 
SELECT 'test1' 
UNION ALL  
SELECT 'test2' 
UNION ALL  
SELECT 'test3' 
UNION ALL  
SELECT 'test4' 
UNION ALL  
SELECT 'test5' 
UNION ALL  
SELECT 'test6' 
UNION ALL  
SELECT 'test7' 
UNION ALL  
SELECT 'test8' 

--查看插入的數據

SELECT * FROM testrestore


waitfor '00:01:00'--此處最好設置等待幾分鐘,以免後面日誌恢復,時間點設置好有參考,回滾太前可能表都沒有創建

--對數據庫testdb進行完全備份,注意要追加現有媒體備份集,這也是默認備份設置
backup database testdb to disk='e:\testdb_data.bak' with format

--刪除表名

waitfor time '12:55'       --精確刪除表的時間,爲後面還原時間的準確選取做準備
delete from testrestore    --刪除數據

--查看數據內容,數據被刪除
select * from testrestore

--對數據庫進行日誌備份
backup log testdb to disk='e:\testdb_log.bak' with format

--對數據庫的數據文件進行還原

restore database testdb from disk='e:\testdb_data.bak' with replace,norecovery  --執行後發現數據庫處於還原狀態

--對數據庫日誌文件進行還原

restore log testdb from disk='e:\testdb_log.bak' with recovery,
stopat='2013-10-18 12:54:00:000'  --with recovery使數據庫處於可用狀態 此處時間格式要注意


--最後使用數據庫,查看數據,恢復成功
use testdb
go

select * from testrestore  --查看恢復後的狀況,原表數據存在

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章