SQLServer 2008以上误操作数据库恢复方法

上传人:re****.1 文档编号:509830590 上传时间:2022-10-13 格式:DOCX 页数:18 大小:359.66KB
返回 下载 相关 举报
SQLServer 2008以上误操作数据库恢复方法_第1页
第1页 / 共18页
SQLServer 2008以上误操作数据库恢复方法_第2页
第2页 / 共18页
SQLServer 2008以上误操作数据库恢复方法_第3页
第3页 / 共18页
SQLServer 2008以上误操作数据库恢复方法_第4页
第4页 / 共18页
SQLServer 2008以上误操作数据库恢复方法_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《SQLServer 2008以上误操作数据库恢复方法》由会员分享,可在线阅读,更多相关《SQLServer 2008以上误操作数据库恢复方法(18页珍藏版)》请在金锄头文库上搜索。

1、SQLServer 2008以上误操作数据库恢复方法一日志尾部备份问题:经常看到有人误删数据,或者误操作,特别是update和delete的时候没 有加where,然后就喊爹喊娘了。人非圣贤孰能无过,做错可以理解,但不能 纵容,这个以后再说,现在先来解决问题。遇到这种情况,一般都是没有做备份, 不然也不会来发问了。首先要冷静,否则会有更大的灾难。直到你放弃。解决方法:对于这类问题,主要是找回误操作之前的数据,在2008之前,有个很出名 的工具Log Exploer,听说还挺好用的,这个网上大把教程,这里就不多说了。 但是唯一遗憾的是,不支持2008及更高版本,这时除了其他第三方工具,那么 最常

2、用的就是本文提到的方法一一日志尾部备份。本文实验环境2008R2,对于 2008及其以上版本可以使用这个方法,其实2005也可以,2000很少用,没试 过,只是2008之前可以使用Log Exploer,所以就没必要用这种方法。下面图文并茂讲解操作方法,至于原理,不属于本文范围,而且我相信真遇 到误操作的时候,估计没人会看原理了。步骤:(1)、检查数据库的恢复模式,如图:E (SQL Server 10.50.2500 -D 口至鋼娠庠L 口琳辜扶照3 U3 U3 |_3宝全性3 口舷器朋i匚i貝制D 口管連+1 催 SCL Server 彳AdwentursWnrkR斷建琳竜Nh编写数珈同本

3、为闻任务币丐 Find Invalid ObjectsSte(o)方面冋启动 PowerSh-D 11(H)拓丟闫启性岡SRfli ?|= r-丄T:-Chi r.i*Jtt CL 1KS-1I :#. m二-11.HL Sir-Rr MKB aOD)”* H.K;1S 2(LJil sS Skxtah Srhsr-lrdwj JSflTd.seSkti e krok+r flilFjii7*?&=rbEd-i-Mfiirfen*l3iflLi| t|釉.W強何主迅?415Q 4c3磁证OT7EJ1.SfiAWiliUMAL=It犬月左咼片断中帕直用Td.seQ栾靜WC JILL JllJ.l

4、f?13U JlLli? SjgfflTlrSW皿I答酋已翻TfUwe arrteeflIxnzJIwUel.LI岸忖栢式己綁farmfl*H:5或者使用脚本检查:1. SELECT recovery_model,recovery_model_desc2. FROM sys.da tabases3. WHERE name =AdventureWorks结果如下:necavery_madel necovery_rnodel_desc! lj FULLk:确保数据库的恢复模式最起码不能为【简单】。至于如何修改成完整模式, 我觉得这些应该没必要多说了。切记,对于任何重要环境,不仅仅是客户正式环境(俗

5、称生产环境),都强 烈建议使用【完整恢复模式】,虽然对于另外两种(大容量日志(BULK_LOGGED)、 简单(SIMPLE)来说,完整恢复模式产生的日志会大,但是在出现问题的时候, 就会觉得这些都不算什么了。并且我也想不到任何理由对于正式环境不使用完整 恢复模式。只要管理得当,完整恢复模式的日志也不会太变态。(2)、这里其实隐含另外一步,曾经做过最少一次的完整备份。因为所有 类型的备份都基于完整备份,如果没有最少一次完整备份,其他类型的备份都是 多余的,所以在这里强调一下,在创建完一个新数据库之后,强烈建议甚至强制 做一次完整备份。1. SELECT database_name,recove

6、ry_model, name2. FROM msdb.dbo.backupset使用上面的语句粗略可以看到有那些数据库做过备份,由于测试,所以做了 几次备份,可以看到我这个时间点已经做了备份了。1垢禾启忌dart3b3se_n3rrie-necovery_modelnameb3tkLpJinish_d3te1cbcscloudSIMPLE整数据库备份2012-11-14 09:11:30.flM2Advent uneWo rksFULLAd怕ntwWo也克整数据库备份419 21:17:5.2|3AdventureWorksFULLAdventuneWorits整数拐库瞥份20134)1-09

7、 21:26:33.2(3)、确保别人不再连接数据库,然后做一次日志尾部备份: 首先先创建一点数据:sqlview plaincopyprint?1. /*2. 由于tempdb永远为简单恢复模式,所以不适合做案例。3. 这里使用微软的示例数据库AdventureWorks4. */5. USE AdventureWorks6. GO7.IF OBJECT_ID( tes tRes tore) IS NOT NULL8.DROP TABLE testRestore9.GO10.CREATETABLE testRestore11.(12.id INT IDENTITY(113.NAME VARC

8、HAR(50)14.);15.插入测试数据:16.INSERTINTO testRestore(Name)17.SELECTt es t118.UNIONALL19.SELECTt es t220.UNIONALL21.SELECTt es t322.UNIONALL23.SELECTtest424.UNIONALL25.SELECTt es t526.UNIONALL27.SELECTtest628.UNIONALL29.SELECTt es t71)30. UNION ALLSELECT test831.FROM testRestore然后来做个删除操作,为了定位是啥时候发生的,我加了一个

9、waitfor命令, 让它在某个时间发生,这样恢复的时候就有准确性:sql view plaincopyprint?C1. USE Adve ntu reWorks2. GO3. WAITFOR TIME 21:454. DELETE FROM dbo.testRestore现在来看看数据:sql view plaincopyprint?C1. USE Adve ntu reWorks2. GO3. SELECT * FROM dbo. testRestore12USE AdvetjreWcrksEGSELECT * FROM dbc.testKestcre二1结果消息id NAME到这一步,

10、灾难出现了。但是切记要冷静F面就是本文的重点开始,做一次日志备份,最重要是选择【备份日志尾部】I爭劳口志埶傭库(B) 丈件和立眸爼園;畐怕隼喀称 00:nturrfprki-a 志 詩曲9MC1备瞬竝期时问-*晚于信):( 在(0):牡削彗山#出xsa:Q哺盘c瞬IE: Ad化nlurmlf orki. b ak然后在【选项】页选择:除【事务日志】除,其他红框包裹的地方为强烈建 议勾选的地方。并且保证数据库不要有别人在连接,因为备份日志尾部会使数据 库处于还原状态,拒绝其他会话的连接,如果不断开其他连接,是备份不了的。然后按确定,当然,可以使用上方的【脚本】来生成语句:sql view pla

11、incopyprint?1. USE Mas ter2. GO3. BACKUP LOG AdventureWorks TO DISK = NE:AdventureWorks.bak WITH NO_TRUNCATE , NOFORMAT, NOINIT, NAME = NAdv ent ureWorks-事务日志备份,SKIP, NOREWIND, NOUNLOAD, NORECOVERY , COMPRESSION, STA TS =10, CHECKSUM4. GO5. declare backupSetld as int6. select backupSetld = position

12、from msdb.backupset wher e database_name=NAdventureWorks and backup_set_id=(select max (b ackup_set_id) from msdb.backupset where database_name二NAdventur eWorks)7.if backupSetld is null begin raiserror(N验证失败。找不到 数据库“ Adven tureWorks 的备份信息。,16,1) end8. RESTORE VERIFYONLY FROM DISK = NE:AdventureWorks

13、.bak町THFILE = backupSetId,NOUNLOAD, NOREWIND9. GO此时,数据库会处于【正在还原】的状态e 0 -Q a滴库 口就崩库 口数摇库快照AdventureWorks- (IE在还原“0 口宝全性0 EJ服务器对恚a 口曩制田口管理0 国 SQL Server -KS.如果发现备份不了可以用下面语句查看,并把spid杀掉:sql view plaincopyprint?亡1. SELECT * FROM sys.sysprocesses WHERE dbid二DB_ID(Advent ureWorks)执行结果:kpidblock&dwarttypeIdStwattypewabescuruedbidLidspyphyBical_K叵10氐tw&MISCELLANEOUS510D2540QeMW0MISCELLANEOU5510

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号