記一次SQLServer資料庫誤刪資料找回

2022-02-09 09:19:16 字數 1688 閱讀 1344

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

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

一、還原需要的條件設定

使用命令,是通過sqlserver的事務日誌以及乙個誤刪除前的資料庫的完整備份進行還原,所以在sqlserver2012的維護計畫嚮導中,要建立完整備份,差異備份和事務日誌,具體如下

以及在資料庫屬性,選項設定中,設定為完整備份,具體如下圖

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

二、還原命令

還原主要分為四步走:

1、出現故障後,首先執行備份事務日誌命令,這裡以adventureworks作為資料庫名。命令如下:

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、從事務日誌還原資料,還原到某個時間點之前

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、還原資料庫,如果資料庫提示正在還原中,則執行此命令即可。

restore database adventureworks with recovery

一次SQLServer資料庫修復經歷

資料庫損壞情況 資料庫有多個資料檔案及日誌檔案,其中乙個資料檔案損壞丟失,後通過檔案恢復工具恢復出來,但是有錯誤,導致資料庫無法啟動。修復步驟 1.首先嘗試 附加資料庫 根據網上的資料,如果資料庫損壞不嚴重的話,可以直接通過 附加資料庫 的方式恢復,但是很不幸,嘗試失敗 不過通過 附加資料庫 得到了...

記一次資料庫的實戰

話不多說 直接開始 開始我們的敲 的工程吧 首先匯入標頭檔案 import tkinter import tkinter.messagebox import pandas as pd import numpy as np import matplotlib.pyplot as plt from sk...

記一次MySQL資料庫crash事件

mysql8.0資料庫最近一次不知道怎麼回事,突然啟動不了,如下提示 mysql daemon failed to start 日誌如下 網上也找了很多資料,但都處理不了 因為本人安裝資料庫習慣將安裝好的資料庫移到移到其他目錄,所以做了乙個操作,用原來的覆蓋現有的檔案 左邊是原始資料庫檔案,右邊是移...