SQLServer數據庫誤刪數據找回

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

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

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

1、還原須要的條件設置數據庫

        使用命令,是經過sqlserver的事務日誌以及一個誤刪除前的數據庫的完整備份進行還原,因此在sqlserver2012的維護計劃嚮導中,要創建完整備份,差別備份和事務日誌,具體以下image工具

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

image

作好如上兩個設置,數據庫誤刪後找回數據就會很是輕鬆,如今說一下如何還原sqlserver數據到故障點。post

2、還原命令spa

還原主要分爲四步走:3d

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

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

二、從完整備份還原數據code

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

三、從差別備份還原數據

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

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

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

五、還原數據庫,若是數據庫提示正在還原中,則執行此命令便可。

1
RESTORE DATABASE  AdventureWorks WITH  RECOVERY
相關文章
相關標籤/搜索