在sqlserver2012的維護計劃向?qū)е?,要建立完整備份,差異備份和事?wù)日志。
成都創(chuàng)新互聯(lián)是工信部頒發(fā)資質(zhì)IDC服務(wù)器商,為用戶提供優(yōu)質(zhì)的成都棕樹電信機房服務(wù)
1、至少有一個誤刪除之前的數(shù)據(jù)庫完全備份數(shù)據(jù)庫的恢復(fù)模式(Recovery mode)是“完整(Full)針對這兩個前提條件,如果這兩個前提條件都存在,通過SQL語句只需三步就能恢復(fù)參考文章,無需借助第三方工具。
2、備份當前數(shù)據(jù)庫的事務(wù)日志:BACKUP LOG [數(shù)據(jù)庫名] TO disk= N'備份文件名' WITH NORECOVERY恢復(fù)一個誤刪除之前的完全備份RESTORE DATABASE [數(shù)據(jù)庫名] FROM DISK = N'完全備份文件名' WITH NORECOVERY, ?REPLACE。
3、將數(shù)據(jù)庫恢復(fù)至誤刪除之前的時間點:RESTORE LOG [數(shù)據(jù)庫] FROM ?DISK = N'第一步的日志備份文件名' WITH ? STOPAT = N'誤刪除之前的時間點' , RECOVER如果第1個前提條件不存在,第2個前提條件存在,需要借助第三方工具。
4、如果第2個前提條件不存在,無法恢復(fù)所以,一定要將數(shù)據(jù)庫恢復(fù)模式設(shè)置為“完整開始找的是Log Explorer for SQL Server,不支持SQL Server 2008。后來找的是SQL Log Rescue,也不支持SQL Server 2008接著找到的是SysTools SQL Recovery,支持SQL Server 2008,但需要購買,Demo版并沒有數(shù)據(jù)恢復(fù)功能。
5、最終在officerecovery.com上找到Recovery for SQL Server,雖然也是商業(yè)軟件,需要購買,但Demo版可以恢復(fù)數(shù)據(jù),只要數(shù)據(jù)庫文件不超過24Gb用它完成了誤刪除數(shù)據(jù)的恢復(fù)。
方法:
第一步:選擇需要還原的數(shù)據(jù)庫,鼠標右鍵,選擇任務(wù)下的還原;
第二步:選擇“源設(shè)備”,點擊后面的文件選擇“...”;
第三步:添加需要還原的數(shù)據(jù)庫,還原的數(shù)據(jù)庫文件后綴為備份文件(bak);
第四步:選中添加進來的還原文件,找到左上角上的“選擇項”,勾選第一項(覆蓋現(xiàn)有數(shù)據(jù)庫),點擊確定就可以了。
注意事項
1、一定要記得覆蓋現(xiàn)有數(shù)據(jù)庫;
2、執(zhí)行數(shù)據(jù)庫操作的時候,請斷開當前數(shù)據(jù)庫的任何使用(例如查詢,數(shù)據(jù)庫的連接使用)。
使用Log Explorer查看和恢復(fù)數(shù)據(jù)
Log Explorer 4.1.可用于SQL Server2005的日志查看工具
下載地址:
使用方法:
打開Log Explorer - Attach Log File - 選擇SQL Server服務(wù)器和登陸方式 - Connect -
在Database Name中選擇數(shù)據(jù)庫 - Attach- 左面對話框中Browse- View Log- 就可以看到log記錄了
想恢復(fù)的話: 右鍵Log記錄 Undo Transation- 選擇保存文件名和路徑- 然后打開該文件到查詢分析器里執(zhí)行
T-sql代碼就可以了
例如 如果Log是delete table where ...的話,生成的文件代碼就是insert table ....
然后將此insert table的代碼放到查詢分析器里執(zhí)行.就可以恢復(fù)數(shù)據(jù).
----------------------------------------------------------------------
--如何恢復(fù)被delete/update的數(shù)據(jù)
----------------------------------------------------------------------
1 連接到被刪除數(shù)據(jù)庫的Db
打開log explorer 選擇 "file"-"attach log file"-選擇服務(wù)器和登陸方式-"connect"-選擇"數(shù)據(jù)庫"-"attach"
2 查看日志
在左面操作項目的對話框中選擇"browse"項目-"view log"-就可以看到當前的Log記錄了
3 恢復(fù)數(shù)據(jù)
右鍵某一條log記錄,選擇"undo transation"-"選擇保存文件名和路徑"-然后打開該文件到查詢分析器里執(zhí)行
T-sql代碼就可以了
例如: 如果log是delete table where ...的話,生成的文件代碼就是insert table ....
----------------------------------------------------------------------
--Log Explorer恢復(fù)被drop table和truncate table后的數(shù)據(jù)
----------------------------------------------------------------------
1 連接到被刪除數(shù)據(jù)庫的Db
操作同上
2 恢復(fù)方法
1) 選擇"salvaage dropped/truncate"菜單,在右邊的對話框中選擇表名,和droped/trucated的日期,
File Name中選擇生成insert語句腳步的存放位置,condition選擇是droped還是truncated,
最后點擊"create" 就會生成insert語句,把生成的語句到查詢分析器里面執(zhí)行一下就可以了
2) 選擇"ViewDDL Commands"菜單-選"truncate table" 操作項-點擊"Salvage"-生成語句-查詢分析器里執(zhí)行
----------------------------------------------------------------------
--log explorer使用的幾個問題
----------------------------------------------------------------------
1) 對數(shù)據(jù)庫做完全/差異/日志備份
備份時如果選用了刪除事務(wù)日志中不活動的條目
再用Log explorer打試圖看日志時,提示No log recorders found that match the filter,would you like to view unfiltered data 選擇yes 就看不到剛才的記錄了
如果不選用了刪除事務(wù)日志中不活動的條目
再用Log explorer打試圖看日志時,就能看到原來的日志并做恢復(fù)
2) 修改了其中一個表中的部分數(shù)據(jù),此時用Log explorer看日志,可以作日志恢復(fù)
3) 然后恢復(fù)備份,(注意:恢復(fù)是斷開log explorer與數(shù)據(jù)庫的連接,或連接到其他數(shù)據(jù)上,
否則會出現(xiàn)數(shù)據(jù)庫正在使用無法恢復(fù))
恢復(fù)完后,再打開log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data,選擇yes 就看不到剛才在2中修改的日志記錄,所以無法做恢復(fù).
4) 不要用SQL的備份功能備份,搞不好你的日志就破壞了.
正確的備份方法是:
停止SQL服務(wù),復(fù)制數(shù)據(jù)文件及日志文件進行文件備份.
然后啟動SQL服務(wù),用log explorer恢復(fù)數(shù)據(jù)
SQL Server中誤刪除數(shù)據(jù)的恢復(fù)本來不是件難事,從事務(wù)日志恢復(fù)即可。但是,這個恢復(fù)需要有兩個前提條件:
1. 至少有一個誤刪除之前的數(shù)據(jù)庫完全備份。
2. 數(shù)據(jù)庫的恢復(fù)模式(Recovery mode)是“完整(Full)”。
針對這兩個前提條件,會有三種情況:
情況一、如果這兩個前提條件都存在,通過SQL語句只需三步就能恢復(fù)(參考文章),無需借助第三方工具。
a) 備份當前數(shù)據(jù)庫的事務(wù)日志:BACKUP LOG [數(shù)據(jù)庫名] TO disk= N'備份文件名' WITH NORECOVERY
b) 恢復(fù)一個誤刪除之前的完全備份:RESTORE DATABASE [數(shù)據(jù)庫名] FROM DISK = N'完全備份文件名' WITH NORECOVERY, REPLACE
c) 將數(shù)據(jù)庫恢復(fù)至誤刪除之前的時間點:RESTORE LOG [數(shù)據(jù)庫] FROM DISK = N'第一步的日志備份文件名' WITH STOPAT = N'誤刪除之前的時間點' , RECOVERY
情況二、如果第1個前提條件不存在,第2個前提條件存在,需要借助第三方工具。
情況三、如果第2個前提條件不存在,無法恢復(fù)。所以,一定要將數(shù)據(jù)庫恢復(fù)模式設(shè)置為“完整(Full)”。
我現(xiàn)在面臨的是第二種情況,需要找第三方工具。
開始找的是Log Explorer for SQL Server,不支持SQL Server 2008。
后來找的是SQL Log Rescue,也不支持SQL Server 2008。
接著找到的是SysTools SQL Recovery,支持SQL Server 2008,但需要購買,Demo版并沒有數(shù)據(jù)恢復(fù)功能。
最終在officerecovery.com上找到Recovery for SQL Server,雖然也是商業(yè)軟件,需要購買,但Demo版可以恢復(fù)數(shù)據(jù),只要數(shù)據(jù)庫文件不超過24Gb。幸好朋友的數(shù)據(jù)庫文件不大,用它完成了誤刪除數(shù)據(jù)的恢復(fù)。
下面分享一下用Recovery for SQL Server進行恢復(fù)的操作步驟:
1. 運行Recovery for SQL Server
2. 點擊菜單中的 File Recover,選擇要恢復(fù)的數(shù)據(jù)庫的數(shù)據(jù)文件(.mdf)
3. Next Next,進入 Recovery Configuration 界面,選擇Custom(選擇了Custom才可以選擇從日志中恢復(fù)誤刪除的數(shù)據(jù))。
4. Next 進入 Recovery options 窗口,選中 Search for deleted records,并選擇要恢復(fù)的數(shù)據(jù)庫的日志文件路徑(log file path)。
5. Next 并選擇目標文件夾(Destination folder),用于存放恢復(fù)過程中生成的SQL語句與bat文件。
6. 點擊Start,開始恢復(fù)操作(在上一步選擇的目標文件夾中生成相應(yīng)的SQL文件與Bat文件),然后,出現(xiàn) SQL Server Database Creation Utility 窗口。
7. Next,選擇被恢復(fù)數(shù)據(jù)存放的目標數(shù)據(jù)庫。
8. Next, 選擇 Import availiable data from both database and log files
9. Next, Next, 然后就完成數(shù)據(jù)的恢復(fù)!
1、打開SQL Server Management Studio,連接數(shù)據(jù)庫,找到“本地” - “數(shù)據(jù)庫”。
2、右鍵單擊“還原數(shù)據(jù)庫”或“還原文件和文件組”。
3、在“還原文件和文件組”界面上,輸入目標數(shù)據(jù)庫名稱,選擇“源設(shè)備”,然后單擊“瀏覽”以選擇要還原的文件。
4、您可以添加多個備份文件,選擇恢復(fù)文件,單擊“確定”。
5、檢查要恢復(fù)的bak備份文件,單擊OK,開始恢復(fù)操作,根據(jù)數(shù)據(jù)量,恢復(fù)所需的時間不同,請耐心等待。
6、等待還原完成,單擊“確定”,刷新數(shù)據(jù)庫列表,可以看到剛恢復(fù)的數(shù)據(jù)庫。此時,bak備份文件已恢復(fù)到數(shù)據(jù)庫。
恢復(fù)sqlserver數(shù)據(jù)庫表數(shù)據(jù)步驟如下:
一、心態(tài):
1、務(wù)必冷靜,事情已經(jīng)發(fā)生不可慌亂。
2、立即查看當前時間,最好能夠精確到秒,并做記錄。
3、應(yīng)立即向直接上級反映此事,不可隱瞞,防止事態(tài)擴大。
4、如果權(quán)限允許,應(yīng)當立即停止相關(guān)應(yīng)用,防止有新的數(shù)據(jù)寫入數(shù)據(jù)庫。
二、恢復(fù):
1、構(gòu)建新數(shù)據(jù)庫以及寫入一些數(shù)據(jù)
2、做一次完整備份,這個是前提,沒有一份完整備份文件是無法進行接下來的操作的。
注意:如上圖所示,恢復(fù)模式一定要說完整,如果是其他類型那恐怕就沒有下文了。一般來講新建數(shù)據(jù)庫的時候,默認不要去改恢復(fù)模式這個屬性。
3、寫入一條新數(shù)據(jù)。
4、記住此時要記錄時間點。
此刻最好看一下系統(tǒng)時間。接下來就要演示如何進行數(shù)據(jù)恢復(fù)。
5、做事務(wù)日志備份,做事務(wù)日志備份需要注意一下一點,如圖所示。
備份模式請選擇事務(wù)日志,備份路徑自行決定
進入選項,將可靠性第1、2勾選,事務(wù)日志選擇第二個,壓縮屬性可以不選擇.點擊確定備份成功,此時數(shù)據(jù)庫將顯示為正在還原狀態(tài)
注意:如果備份失敗,請檢查該數(shù)據(jù)庫是否正在被占用,如果是請kill。
6、還原完整備份。
數(shù)據(jù)庫處于正在還原狀態(tài),右鍵數(shù)據(jù)庫--任務(wù)--還原--文件和文件組,選擇最近的一次完整備份。此時,需要在“選項”中選擇第二種還原方式,具體如下圖。
如上圖,勾選完整數(shù)據(jù)備份文件。
如上圖,恢復(fù)狀態(tài)選擇第二種,從字面意思就知道為什么要選擇這種。
7、接著還原備份的事務(wù)日志。
完整備份還原完畢,接著要對事務(wù)日志進行還原,右鍵數(shù)據(jù)庫--任務(wù)--還原--事務(wù)日志,如下圖:
還原事務(wù)日志的時候需要特別注意“時間點”這個設(shè)置,其他不需要設(shè)置。
時間點選擇為誤刪數(shù)據(jù)的時間點之前就可以恢復(fù)出誤刪的數(shù)據(jù),所以之前強調(diào)要查看一下時間。如下圖所示
點擊確定,在確定等待還原成功,數(shù)據(jù)庫變成可用狀態(tài)。如下圖。
如果查詢發(fā)現(xiàn)數(shù)據(jù)不是你想要的,那么可以重復(fù)上述的操作,從備份事務(wù)日志開始,然后最后選擇時間點的時候在縮小范圍。