转:SqlServer2008误操作数据(delete或者update)后恢复数据
Sqlserver2008误操作数据(delete或者update)后恢复数据(转)
实际工作中,有时会直接在数据库中操作数据,比如对数据进行delete或者update操作,当进行这些操作的时候,如果没有加上 where条件或者where条件不合理,那么导致的结果可想而知,如果操作的又是线上数据库,那么这个后果将会非常严重。当事情发生后,我们要想办法补 救,针对于sqlserver2005数据库,有个很出名的工具Log Exploer,具体操作使用大家可以自行搜索;针对于sqlserver2008,也有这样的工具,但是大多是需要付费的...我们尝试用 sqlserver的事务日志来恢复这些受影响的数据。
用事务日志恢复数据,需要两个必要条件:
1,正确的完整数据库的最后一次备份
如果没有数据库完整备份,是不能做事务日志备份的,所以建议创建数据库时,恢复模式一项,应当选择'完整'。
2,正确的即时点
即所要恢复到数据的时间点,这个时间点一般选择误操作发生时间往前一点的时间点,所以当误操作发生时,应尽量记下这个时间点,不然可能导致恢复的数据不够准确。比如,
误操作发生于16:00,这个时间点我们可以选择15:59,如果选择的太靠前,比如15:30,那么15:30--15:59这段时间内的数据就不能被恢复了。
下面记录具体的操作步骤:
首先新建一个数据库dbtest,注意创建数据库时恢复模式一项选择'完整',在数据库中新建一个Table_1,并插入一些数据,然后对该数据库做一个完整备份。
这个备份,主要是模拟实际工作中对数据库的备份,实际中由于数据库可能很大,所以一般备份是一天或者两天进行一次。
备份成功后,接着再往Table_1中插入几条数据, 模拟在原数据库基础上新增加的数据,然后执行一个sql语句:delete from Table_1,模拟误操作,并记录下时间,比如16:00.误操作发生后,我们要赶紧进行事务日志的备份,我们就是根据此备份来还原数据的。
事务日志备份完后,我们可以新建个数据库dbtest1,然后把之前备份的数据库在新建的数据中进行还原,之所以这么做,是因为用事务日志 恢复数据库需要获得数据库的独占访问权,如果在原库上进行恢复,那么这需要对原库停止对外服务,但是这样,可能会导致线上系统不能正常运行,造成非常大的 影响,所以我们新建个数据库用作数据的还原,而不影响线上系统的正常进行。最后把新库中还原回来的数据,再导入到原库中。
对dbtest1进行还原时,注意"选项"的配置
数据库还原成功后,此时dbtest1应为正在还原的状态:,接着对数据库进行还原:任务—>还原—>事务日志,
时间点选择误操作之前的一个时间点,比如15:59:59,然后确定,完成全部数据恢复操作。
下面的一段话源自其他帖子:
1, 这是一般大型网站数据安全的一个办法,因为数据库比较大(可能有几百G)数据,做一次完整备份时间很长,而且影响数据库服务器的性能, 为保证数据安全,大多采用完整备份+事务日志备份来保证数据安全。例如:一天做一次或者2天做一次完整备份,几个小时内做一次日志备份。(当然可以用写一 个job来实现)
2,如SQL server 2005里的镜像就是采用的这种事务日志同步的方法保证数据的同步。
3,如果恢复的日志数据出现”LSN“太早和太晚说明了事务日志间的不连续。这时要注意备份 的时间和顺序。
参考:
dudu:实战 SQL Server 2008 数据库误删除数据的恢复
SQLServer 2008以上误操作数据库恢复方法——日志尾部备份
转:SqlServer2008误操作数据(delete或者update)后恢复数据的更多相关文章
- SqlServer2008误操作数据(delete或者update)后恢复数据
实际工作中,有时会直接在数据库中操作数据,比如对数据进行delete或者update操作,当进行这些操作的时候,如果没有加上where条件或者where条件不合理,那么导致的结果可想而知,如果操作的又 ...
- delete和truncate/drop恢复数据的过程
使用myflash工具恢复delete操作数据,myflash工具注意事项: 该工具注意事项 1.binlog格式必须为row,且binlog_row_image=full 2.仅支持5.6与5.7 ...
- Linux误删文件后恢复数据
在Linux下,基于开源的数据恢复工具有很多,常见的有debugfs.R-Linux.ext3grep.extundelete等,比较常用的有ext3grep和extundelete,这两个工具的恢复 ...
- Oracle误删除数据恢复。Oracle删除后恢复数据
发现误删除时需要及时处理,速度要快,姿势要帅.晚了就恢复不了额 1.查询时间 以确保恢复到某个时间点 select SQL_TEXT, LAST_ACTIVE_TIME from v$sqlarea ...
- SqlServer触发器判断对表操作类型(增、删、改)并将修改后的数据映射到新表
该文章为原创,日后可能会根据实际开发经验和网友评论,进行相应地方修改,为获得最新博客动态,望在转发博客的时候注明出处. 触发器要实现的功能: (1)获取对表Table1数据操作操作类型(insert. ...
- 操作数据(insert、update、delete)
插入数据 使用Insert Into 插入 if(exists(select * from sys.databases where name = 'webDB')) drop database web ...
- Oracle 增删改(INSERT、DELETE、UPDATE)语句
Ø 简介 本文介绍 Oracle 中的增删改语句,即 INSERT.DELETE.UPDATE 语句的使用.是时候展现真正的技术了,快上车: 1. 插入数据(INSERT) 2. 修改数据( ...
- update 后没有加where条件解决办法
MySQL 误操作后数据恢复(update,delete忘加where条件) 在数据库日常维护中,开发人员是最让人头痛的,很多时候都会由于SQL语句写的有问题导致服务器出问题,导致资源耗尽.最危险的操 ...
- svn local delete, incoming delete upon update 解决办法
经常有人会说,树冲突是很难解决的一类冲突,其实一旦了解了其原理,要解决也不难.先回顾下对于树冲突的定义. 树冲突:当一名开发人员移动.重命名.删除一个文件或文件夹,而另一名开发人员也对它们进行 ...
随机推荐
- 推荐十款非常优秀的 HTML5 在线设计工具
网络有很多优秀的设计和开发工具可能大家都不知道,因此这篇文章就向设计师推荐十款优秀 HTML5 在线工具,这些工具能够帮助设计师们设计出更有创意的作品.随着 HTML5 技术的不断成熟,网络上涌现出越 ...
- 使用SVG Path绘图
最近一个项目,需要做个Web版本的设计器,用来进行工厂流水线布局的设计. 项目中采用了SVG.JS来做,但是以前流水线是采用单纯的画线的方式实现.客户提出希望用不同的底纹表示不同的流水线,经过一番调查 ...
- plsql developer导入导出数据库方法
导出步骤: 1 tools ->export user object 选择选项,导出.sql文件 2 tools ->export tables-> Oracle Export 选择 ...
- 在 SUSE 11 sp2 上安装 freeradius
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- WCF与WebService之间的异同
下面我们来详细讨论一下二者的区别.Web Service和WCF的到底有什么区别. 1,Web Service:严格来说是行业标准,也就是Web Service 规范,也称作WS-*规范,既不是框架, ...
- 套题 Codeforces Round #277 (Div. 2)
A. Calculating Function 水题,分奇数偶数处理一下就好了 #include<stdio.h> #include<iostream> using names ...
- c#代码实现GPS数据的有效性校验
用于校验GPS报文指令的有效性 很简单的代码,留存吧 public static bool Verify(string gpsInfo) { if (gpsInf ...
- JAVA数组的定义及用法
数组是有序数据的集合,数组中的每一个元素具有同样的数组名和下标来唯一地确定数组中的元素. 1. 一维数组 1.1 一维数组的定义 type arrayName[]; type[] arrayName; ...
- ValueBar
https://github.com/PhilJay/ValueBar
- linux下xargs命令用法详解
原文:http://blog.chinaunix.net/uid-128922-id-289992.html xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xa ...