版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、SQLServer 2008以上誤操作數(shù)據(jù)庫恢復(fù)方法日志尾部備份問題:經(jīng)常看到有人誤刪數(shù)據(jù),或者誤操作,特別是update和delete的時(shí)候沒有加where,然后就喊爹喊娘了。人非圣賢孰能無過,做錯(cuò)可以理解,但不能縱容,這個(gè)以后再說,現(xiàn)在先來解決問題。遇到這種情況,一般都是沒有做備份,不然也不會(huì)來發(fā)問了。首先要冷靜,否則會(huì)有更大的災(zāi)難。直到你放棄。解決方法:對(duì)于這類問題,主要是找回誤操作之前的數(shù)據(jù),在2008之前,有個(gè)很出名的工具Log Exploer,聽說還挺好用的,這個(gè)網(wǎng)上大把教程,這里就不多說了。但是唯一遺憾的是,不支持2008及更高版本,這時(shí)除了其他第三方工具,那么最常用的就是本文提
2、到的方法日志尾部備份。本文實(shí)驗(yàn)環(huán)境2008R2,對(duì)于2008及其以上版本可以使用這個(gè)方法,其實(shí)2005也可以,2000很少用,沒試過,只是2008之前可以使用Log Exploer,所以就沒必要用這種方法。下面圖文并茂講解操作方法,至于原理,不屬于本文范圍,而且我相信真遇到誤操作的時(shí)候,估計(jì)沒人會(huì)看原理了。步驟:(1)、檢查數(shù)據(jù)庫的恢復(fù)模式,如圖:或者使用腳本檢查:1. SELECT recovery_model,recovery_model_desc2. FROM sys.databases3. WHERE name ='AdventureWo
3、rks'結(jié)果如下: 確保數(shù)據(jù)庫的恢復(fù)模式最起碼不能為【簡(jiǎn)單】。至于如何修改成完整模式,我覺得這些應(yīng)該沒必要多說了。切記,對(duì)于任何重要環(huán)境,不僅僅是客戶正式環(huán)境(俗稱生產(chǎn)環(huán)境),都強(qiáng)烈建議使用【完整恢復(fù)模式】,雖然對(duì)于另外兩種(大容量日志(BULK_LOGGED)、簡(jiǎn)單(SIMPLE)來說,完整恢復(fù)模式產(chǎn)生的日志會(huì)大,但是在出現(xiàn)問題的時(shí)候,就會(huì)覺得這些都不算什么了。并且我也想不到任何理由對(duì)于正式環(huán)境不使用完整恢復(fù)模式。只要管理得當(dāng),完整恢復(fù)模式的日志也不會(huì)太變態(tài)。(2)、這里其實(shí)隱含另外一步,曾經(jīng)做過最少一次的完整備份。因?yàn)樗蓄愋偷膫浞荻蓟谕暾麄浞?,如果沒有最少一次完整備份,其他類型
4、的備份都是多余的,所以在這里強(qiáng)調(diào)一下,在創(chuàng)建完一個(gè)新數(shù)據(jù)庫之后,強(qiáng)烈建議甚至強(qiáng)制做一次完整備份。1. SELECT database_name,recovery_model,name 2. FROM msdb.dbo.backupset 使用上面的語句粗略可以看到有那些數(shù)據(jù)庫做過備份,由于測(cè)試,所以做了幾次備份,可以看到我這個(gè)時(shí)間點(diǎn)已經(jīng)做了備份了。(3)、確保別人不再連接數(shù)據(jù)庫,然后做一次日志尾部備份:首先先創(chuàng)建一點(diǎn)數(shù)據(jù):sql view plaincopyprint?1. /* 2. 由于tempdb永遠(yuǎn)為簡(jiǎn)單恢復(fù)模式,所以不適合做案例。
5、 3. 這里使用微軟的示例數(shù)據(jù)庫AdventureWorks 4. */ 5. USE AdventureWorks 6. GO 7. IF OBJECT_ID('testRestore') IS NOT NULL 8. DROP TABLE testRestore 9. GO
6、;10. CREATE TABLE testRestore 11. ( 12. id INT IDENTITY(1, 1) , 13. NAME VARCHAR(50) 14. );
7、0;15. -插入測(cè)試數(shù)據(jù): 16. INSERT INTO testRestore(Name) 17. SELECT 'test1' 18. UNION ALL 19. SELECT 'test2' 20. UNION ALL 21. SELECT 'test3'
8、22. UNION ALL 23. SELECT 'test4' 24. UNION ALL 25. SELECT 'test5' 26. UNION ALL 27. SELECT 'test6' 28. UNION ALL 29. SELECT 'test7&
9、#39; 30. UNION ALL 31. SELECT 'test8' 32. SELECT * FROM testRestore 檢查一下結(jié)果:然后來做個(gè)刪除操作,為了定位是啥時(shí)候發(fā)生的,我加了一個(gè)waitfor命令,讓它在某個(gè)時(shí)間發(fā)生,這樣恢復(fù)的時(shí)候就有準(zhǔn)確性:sql view plaincopyprint?1. USE AdventureWorks 2. GO
10、0;3. WAITFOR TIME '21:45' 4. DELETE FROM dbo.testRestore 現(xiàn)在來看看數(shù)據(jù):sql view plaincopyprint?1. USE AdventureWorks 2. GO 3. SELECT * FROM dbo.testRestore 到這一步,災(zāi)難出現(xiàn)了。但是切記要冷靜。下面就是本文的重點(diǎn)開始,做一次日志備份,最重要
11、是選擇【備份日志尾部】然后在【選項(xiàng)】頁選擇:除【事務(wù)日志】除,其他紅框包裹的地方為強(qiáng)烈建議勾選的地方。并且保證數(shù)據(jù)庫不要有別人在連接,因?yàn)閭浞萑罩疚膊繒?huì)使數(shù)據(jù)庫處于還原狀態(tài),拒絕其他會(huì)話的連接,如果不斷開其他連接,是備份不了的。然后按確定,當(dāng)然,可以使用上方的【腳本】來生成語句:sql view plaincopyprint?1. USE Master 2. GO 3. BACKUP LOG AdventureWorks TO DISK = N'E:A
12、dventureWorks.bak' WITH NO_TRUNCATE , NOFORMAT, NOINIT, NAME = N'AdventureWorks-事務(wù)日志 備份', SKIP, NOREWIND, NOUNLOAD, NORECOVERY , COMPRESSION, STATS = 10, CHECKSUM &
13、#160;4. GO 5. declare backupSetId as int 6. select backupSetId = position from msdb.backupset where database_name=N'AdventureWorks' and backup_set_id=(select max(backup_set_id) from msdb.backupse
14、t where database_name=N'AdventureWorks' ) 7. if backupSetId is null begin raiserror(N'驗(yàn)證失敗。找不到數(shù)據(jù)庫“AdventureWorks”的備份信息。', 16, 1) end 8. RESTORE VERIFYONLY FROM DISK = N'E:A
15、dventureWorks.bak' WITH FILE = backupSetId, NOUNLOAD, NOREWIND 9. GO 此時(shí),數(shù)據(jù)庫會(huì)處于【正在還原】的狀態(tài)如果發(fā)現(xiàn)備份不了可以用下面語句查看,并把spid殺掉:sql view plaincopyprint?1. SELECT * FROM sys.sysprocesses WHERE dbid=DB_ID(&
16、#39;AdventureWorks') 執(zhí)行結(jié)果:然后kill掉。接著繼續(xù)備份。 然后進(jìn)行還原,如圖:先要還原完整備份,選擇最近的那次,由于日志備份的特性(以后其他文章再說),只認(rèn)最后一次備份,所以要選擇最新的那次,否則還原不了。這里又有一個(gè)注意事項(xiàng),記得選擇:接著還原日志文件,這是最最重要的一步:然后:由于實(shí)驗(yàn)的時(shí)候出了點(diǎn)問題,后面重做了,所以時(shí)間選擇到22:19分,我是在22:20分刪除數(shù)據(jù)的。這里不用太在意,只要把時(shí)間點(diǎn)指定到你誤刪除的時(shí)間之前即可。而由于日志尾部備份都是最后一個(gè)備份文件,所以這里選則紅框部分即可:現(xiàn)在再檢查一下:可以看到,數(shù)據(jù)已經(jīng)還原成功。 總結(jié):平時(shí)不做備份,出問題來喊急,這是茍有自取,還有一些腦袋發(fā)熱的人喜歡看到ldf很大就直接刪除,那以后出問題就別怪微軟了。本文中的方法看上去有點(diǎn)繁瑣,但是實(shí)操幾次就覺得好了,但是步驟建議嚴(yán)格按照上面說的,因?yàn)橐坏┎僮麇e(cuò)誤,就很麻煩,此時(shí)再次強(qiáng)調(diào)冷靜冷靜再冷靜!這種方法有幾個(gè)缺點(diǎn):1、
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)業(yè)科技臨建房施工合同
- 燃?xì)鈴S租賃合同模板
- 石油開采平臺(tái)變形縫施工協(xié)議
- 錳礦建設(shè)協(xié)議
- 野營基地裝飾工程合同
- 2025年建筑項(xiàng)目施工許可協(xié)議9篇
- 二零二五年度出租車公司股權(quán)質(zhì)押與擔(dān)保合同3篇
- 2025年度食堂服務(wù)人員派遣與餐飲企業(yè)文化推廣合同3篇
- 2025年度混凝土攪拌車環(huán)保運(yùn)輸協(xié)議3篇
- 中央空調(diào)系統(tǒng)工程安裝協(xié)議典范版A版
- 公文改錯(cuò)完整版本
- 重慶市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- ISO22716-執(zhí)行標(biāo)準(zhǔn)化妝品良好操作規(guī)范GMPC標(biāo)準(zhǔn)及內(nèi)審員培訓(xùn)教材
- 一個(gè)女兒的離婚協(xié)議書模板
- 2024年重點(diǎn)高中自主招生物理試題含答案
- 2020-2021學(xué)年-人教版八年級(jí)英語下冊(cè)-Unit-1-閱讀理解專題訓(xùn)練(含答案)
- 智慧農(nóng)業(yè)總體實(shí)施方案(2篇)
- 天然甜味劑的開發(fā)與應(yīng)用
- 2024年大學(xué)試題(宗教學(xué))-佛教文化筆試參考題庫含答案
- 農(nóng)村生活污水處理站運(yùn)營維護(hù)方案
- 部編版小學(xué)語文四年級(jí)下冊(cè)二單元教材分析解讀主講課件
評(píng)論
0/150
提交評(píng)論