设为首页 收藏本站
查看: 786|回复: 0

[经验分享] ONLY三行脚本, SQL数据恢复到指定时间点

[复制链接]

尚未签到

发表于 2018-10-22 12:35:55 | 显示全部楼层 |阅读模式
经常看到有人误删数据,或者误操作,特别是Update和Delete的时候没有加WHERE ... 然后就喊爹喊娘了,怕是亲爹妈也无奈摇肩。
  话说,如果没有犯过错误,那你还算是搞程序的吗?!没了偶尔的心跳,注定一辈子的孤独啊,哈哈哈....
  OK,书归正传,要分享一下我的当时的处理方案,与诸君共勉,欢迎吐槽,多多沟通。
  遇到这种情况,一般都是没有做备份,或者备份不及时(比如,当时我公司的数据,就没有做实时备份,不过还好的是我25号数据误操作,组长也然在19号做了备份,万幸万幸哦!),不然也不会来发问了。首先要淡定,否则会有更大的麻烦。
  不过,不用担心,现在就告诉你,三行sql脚本,数据恢复到指定的时间。客官,请上眼..
  首先,你要确定的是你数据恢复模式是哪一种。具体方法:选择操作的数据库,“属性”——》“选项”——》“恢复模式”,是否选择的是“完整”。
  确保在误操作之前存在一个全库备份(或已有多个差异备份或增量备份),首先要做的事就是进进行一次日志备份(如果为了不让日志文件变大而置trunc. log on chkpt.选项为1那你就死翘了)
  backup database Demo to disk='D:\db.bak'
  确保数据库的恢复模式最起码不能为【简单】。至于如何修改成完整模式,这个应该没必要多说了。


  或者使用脚本检查:
  select recovery_model,recovery_model_desc
  from sys.databases
  where name ='AdventureWorks'




  然后,要确保别人不再链接数据库 ,然后做一次日志尾部备份
  看下这段剁手都来不及的脚本吧 ...
  UPDATE Person SET Gender='女'
  操作前:http://images0.cnblogs.com/blog2015/381989/201507/130817526882637.png     http://blog.51cto.com/e/u261/themes/default/images/spacer.gif        >>       操作后: http://images0.cnblogs.com/blog2015/381989/201507/130818004707261.png  http://blog.51cto.com/e/u261/themes/default/images/spacer.gif
  如果,这是张客户表,呃,,,
  当然,我相信你是无心之举,无论如何,淡定,淡定,相信我,这个时候,老板是不会炒了你的,但是,你抓鸡也是要赶紧找回丢失的数据。
  ONLY三行脚本, SQL数据恢复到指定时间点
  --1、 首先,备份事务日志(还原日志必须在 还原完全备份的基础上进行。而使用事务日志才能还原到指定的时间点
  BACKUP  LOG Demo TO disk='D:\\db_log.bak' WITH FORMAT
  --2、接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)
  RESTORE DATABASE Db FROM DISK='c:\db.bak' WITH REPLACE,NORECOVERY
  3、将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早
  RESTORE LOG Db FROM DISK='c:\db_log.bak' WITH RECOVERY,STOPAT=''     --获取比表被删除的时间略早的时间


  如果发现备份不了可以用下面语句查看,并把spid杀掉:
  SELECT  * FROM sys.sysprocesses WHERE dbid=DB_ID('Demo')
  --查询一下,看表是否恢复
  SELECT * FROM Demo.Person
  ps,  操作这些脚本的时候 ,建议是在master 数据库下进行,很好, 解决数据恢复喽
After All:
平时不做备份,出了问题就抓鸡,这也是你们咎由自取!如果你的公司是这样,建议你赶紧离去,一个对数据不重视的公司,你留着有何意义。
  但是,任谁也避免不了工作中的一些失误,关键是咱们解决问题的能力。但作为久经沙场的战友们,此时,不是要你想到多少种方案解决,你的朋友圈有多少酒友可以求助,有多路大神求支援 ...
  你只需做两件事:1、30秒认真想想你前后都做了哪些操作;
  2、15秒内向你的直属领导如实汇报。
  这种方法有几个缺点(此处杜撰被人,也然找不到作者何人):
  1、如果你发现误操作以后还有很多人做了操作,那么你还原成功后,别人的操作就会冲掉,所以发生误操作后,要马上停止别人对数据库的操作。
  2、这个方法要对数据库独占,所以你想偷偷恢复是不行的了。勇敢承认错误吧。
  对于核心数据表,还是要先做好预防操作。
  转载自:http://www.cnblogs.com/fuguoliang/p/4642004.html


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-624990-1-1.html 上篇帖子: mysql中sql语句slow query 下篇帖子: 两条sql变为一条sql-dba天空
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表