经常看到有人误删数据,或者误操作,特别是Update和Delete的时候没有加WHERE ... 然后就喊爹喊娘了,怕是亲爹妈也无奈摇肩。

话说,如果没有犯过错误,那你还算是程序猿(媛)麽?!没了偶尔的心跳,注定一辈子的孤独啊,哈哈哈....

OK,书归正传,分享一下我的激情一刻,与诸君共勉,欢迎吐槽,多多沟通。

误删除或误操作,特别是UPDATE和DELETE遇到这种情况,一般都是没有做备份,或者备份不及时(比如,当时我公司的数据,当时在25号误操作数据,update了4万条数据,组长也然在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='女'

操作前:             >>       操作后:   

如果,这是张客户表或者订单之类,真的要呵呵了~~

当然,我相信咱们都是无心之举,无论如何,淡定,淡定,相信我,这个时候,老板是不会炒了你的,但是,你抓鸡也是要赶紧找回丢失的数据。

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、这个方法要对数据库独占,所以你想偷偷恢复是不行的了。勇敢承认错误吧。

对于核心数据表,还是要先做好预防操作。

 

ONLY三行脚本 SQL数据恢复到指定时间点的更多相关文章

  1. Sql server 查询指定时间区间工作日数、休息日数等日期操作

    1.查询指定时间区间的工作日 这个主要难点是法定节假日,国家的法定节假日每年都不一样,还涉及到调休,所以我们设计一个假日表.主要字段有年份,类型(是否调休),假期日期.如下: CREATE TABLE ...

  2. Elasticsearch-shell脚本实现定时删除指定时间以前索引

    〇.前言 因为elastiflow的数据量还是挺大的,接入了两台交换机的flow数据量已经开始有点大了.所以得写个脚本专门来清理索引 一.如何使用elastic的API 1.手动查询所有索引 在ELK ...

  3. sql server还原到指定时间

    BACKUP LOG yjxy_1010 TO DISK='d:\yixy_log.bak' WITH FORMAT 数据库右击->任务->还原->还原事务日志.

  4. 【RMAN】使用RMAN备份将数据库不完全恢复到指定时间点

    RMAN作为Oracle强大的备份恢复工具,可以协助我们恢复数据库到指定时间点,这便是Oracle不完全恢复的一种体现,通过这种方法可以找回我们曾经丢失的数据.这里以找回误TRUNCATE表数据为例给 ...

  5. SQL Server 数据恢复到指点时间点(完整恢复)

    SQL Server 数据恢复到指点时间点(完整恢复) 高文龙关注2人评论944人阅读2017-03-20 12:57:12 SQL Server 数据恢复到指点时间点(完整恢复) 说到数据库恢复,其 ...

  6. SQL Server 获取最后一天(指定时间的月最后一天日期)

    /* author OceanHo @ 2015-10-23 10:14:21 获取指定时间字符串指定日期的月最后一天日期 */ IF OBJECT_ID('get_LastDayDate') IS ...

  7. sql语句延时执行或者是指定时间执行

    --使用waitfor语句延迟或暂停程序的执行 --waitfor{delay'time'|time 'time'} delay是指间隔时间 最长到24小时 time是指定时间执行 waitfor d ...

  8. sql语句中日期时间格式化查询

          今天在做会员管理系统搜索时,我发现以前的搜索时间方式不太科学,效率也不是太高.由其是在查询指定的时间相等的时候,我在数据库中都存这样的时间格式"2007-5-22 14:32:1 ...

  9. SQL Server 日期和时间类型

    在Microsoft SQL Server的类型系统中,使用 date 表示日期类型,使用time表示时间类型,使用DateTime和DateTime2表示日期和时间的组合,DateTime2是Dat ...

随机推荐

  1. ural1519插头DP

    1519. Formula 1 Time limit: 1.0 second Memory limit: 64 MB Background Regardless of the fact, that V ...

  2. 疯狂html5演讲(两):HTML5简经常使用的元素和属性(一个):html5保留经常使用的元素

    html5取出一小部分的元素和属性:主要删除的各种元素和属性与文档相关的风格.例<font>.width等待,html5建议规范css样式表来控制html文档样式. 1.基本元素 < ...

  3. Android SDK Web SDK 接口测试总结

    什么是SDK SDK就是一个程序,提供一些方法,调用这些方法,可以实现一些功能.如:调用银行提供的SDK,可以实现在线支付的功能. 目前主要接手的SDK有js SDK 和android SDK.JS ...

  4. swift 笔记 (二十) —— 泛型

    泛型 泛型是为了解决在针对不同数据类型.而做了同一种功能的操作导致的每一个类型我们都要写一份代码的问题. 有了泛型,我们能够仅仅写一份逻辑代码,而适应于不同的数据类型. func swapInt(in ...

  5. 使用Windows2003创建AD服务器 - 进阶者系列 - 学习者系列文章

    Windows 2003的AD功能不是很强,但是还是提供了不错的功能.下面简要介绍下Windows 2003的AD配置说明. 1.  从添加删除Windows组件安装AD功能项 2.  完成安装.这里 ...

  6. ventBroker简单实现

    C#编程实践—EventBroker简单实现 前言 话说EventBroker这玩意已经不是什么新鲜货了,记得第一次接触这玩意是在进第二家公司的时候,公司产品基础架构层中集成了分布式消息中间件,在.n ...

  7. 【Web.xml配置具体解释之context-param 】

    转自:http://blog.csdn.net/liaoxiaohua1981/article/details/6759206 格式定义: [html] view plaincopy <cont ...

  8. CentOS 6.5玩转自制Linux、远程登录及Nginx安装测试

    前言    系统定制在前面的博文中我们就有谈到过了,不过那个裁减制作有简单了点,只是能让系统跑起来而,没有太多的功能,也没的用户登录入口,而这里我们将详细 和深入的来谈谈Linux系统的详细定制过程和 ...

  9. Asp.net MVC的Model Binder工作流程以及扩展方法(1)

    Asp.net MVC的Model Binder工作流程以及扩展方法(1)2014-03-19 08:02 by JustRun, 523 阅读, 4 评论, 收藏, 编辑 在Asp.net MVC中 ...

  10. iOS基础 - 控制器

    一.当两个控制器互为父子关系的时候,它们的view一般也是互为父子关系 比如想添加A控制器的view到B控制器的view上,就应该让A控制器成为B控制器的子控制器,而B控制器就称为A控制器的父控制器 ...