1. 程式人生 > >SQLServer數據庫誤刪數據找回

SQLServer數據庫誤刪數據找回

時間 cells hour number html nbsp 如果 com dem

記一次SQLServer數據庫誤刪數據找回

昨天 同事在本機清理數據庫表時,連接到了生產機,誤刪了二十幾張表,幸好是晚上加班的時候刪除的,生產機上當時是一天一備份,還原備份是最後的策略,最關鍵的還是要找回數據。

生產機環境是server2008 R2、 sqlserver2012,使用delete語句刪除的表現在開始還原,還原可參考dudu的這篇文章(鏈接),其中使用Recovery for SQL Server工具還原,發現還原的數據字段值為demo,所以最後還是用sql命令去還原的,用sql命令,微軟官方給的比較明細(鏈接)。

一、還原需要的條件設置

使用命令,是通過sqlserver的事務日誌

以及一個誤刪除前的數據庫的完整備份進行還原,所以在sqlserver2012的維護計劃向導中,要建立完整備份,差異備份和事務日誌,具體如下技術分享

以及在數據庫屬性,選項設置中,設置為完整備份,具體如下圖

技術分享

做好如上兩個設置,數據庫誤刪後找回數據就會非常輕松,現在說一下如何還原sqlserver數據到故障點。

二、還原命令

還原主要分為四步走:

1、出現故障後,首先執行備份事務日誌命令,這裏以AdventureWorks作為數據庫名。命令如下:

1 2 BACKUP LOG AdventureWorks TO DISK = ‘C:\SQLServerBackups\AdventureWorks_transcationlog.bak‘
WITH NORECOVERY;

2、從完整備份還原數據

RESTORE  DATABASE [QASupervision] FROM DISK=‘M:\Database\OA\AdventureWorks_Fullbackup_2014_03_18_010002_0155764.bak‘ 
WITH  NORECOVERY, REPLACE 

3、從差異備份還原數據

RESTORE DATABASE [QASupervision] FROM DISK=‘M:\Database\OA\AdventureWorks_diffbackup_2014_03_18_020002_0155764.bak‘ WITH NORECOVERY, REPLACE 

4、從事務日誌還原數據,還原到某個時間點之前

1 2 3 4 DECLARE @dt datetime SELECT @dt=DATEADD(HOUR,-16,GETDATE()) select @dt RESTORE LOG [QASupervision] FROM DISK=‘C:\SQLServerBackups\AdventureWorks_transcationlog.bak‘ WITH STOPAT=@dt,RECOVERY

5、還原數據庫,如果數據庫提示正在還原中,則執行此命令即可。

1 RESTORE DATABASE AdventureWorks WITH RECOVERY

SQLServer數據庫誤刪數據找回