SQL Server数据误删恢复

声明:本教程仅供学习、研究、测试使用,本文作者不承担任何法律责任!

 

一、前言

经常看到有人误删数据,或者误操作,特别是update和delete的时候没有加where,然后就喊爹喊娘了。人非圣贤孰能无过,做错可以理解,但不能纵容,这个以后再说,现在先来解决问题。

遇到这种情况,一般都是没有做备份,不然也不会来发问了。首先要冷静,否则会有更大的灾难。直到你放弃。  

之前生产数据库使用的是sqlserver2000和2005,当时也出现过误删数据的情况,用Log Exlorer For SQL很轻松就恢复了数据,现在SQL Server数据库已经升级到2016了这个工具无法使用了,因此只能采用其他办法。

本次试验环境是SQL Server 2012版本。但方法同样适用其他版本的SQL Server,目前看起来SQL Server 2008之后的版本都是可以的 。

 

二、提醒

本方法需要数据库的恢复模式是完整,且必须有一个完整的数据库备份,如果没有这两个前提那就没法使用这个方法恢复数据。所以日常的数据备份一定要做,否则死的是你自己。

另外如果有用AlwaysOn,需要现将AlwaysOn可用性数据库删除,不然后面的备份动作无法进行。

在此构建一个新的数据库模拟数据恢复全过程。

 

三、实验步骤

1、构建新数据库以及写入一些数据

http://images2015.cnblogs.com/blog/43724/201611/43724-20161123105930831-635176457.png

新建数据表

http://images2015.cnblogs.com/blog/43724/201611/43724-20161123105950690-993671806.png

写入一些数据

http://images2015.cnblogs.com/blog/43724/201611/43724-20161123110000268-89693304.png

需要注意数据库的恢复模式一定要是完整,否则此方法不可行

2、做一次完整备份,这个是前提,没有一份完整备份文件是无法进行接下来的操作的。

注意:如上图所示,恢复模式一定要说完整,如果是其他类型那恐怕就没有下文了。一般来讲新建数据库的时候,默认不要去改恢复模式这个属性。

3、写入一条新数据

这里随便加了一条数据做为备份后写入的新数据

 

4、删除数据

这时悲剧出现,数据被删除,且上次备份之后已经有新的数据写入,直接恢复肯定新写入的数据就丢失了。接下来继续操作

记住此时要记录时间点,在现实中往往会由于慌乱忘记记录,但是希望看了这个文章之后能够记住此事。时间越精确越好。

好既然悲剧已经发生,也有了心理准备和恢复前准备,此刻最好看一下系统时间。接下来就要演示如何进行数据恢复。

5、事务日志备份,

备份数据被删除后的数据库事务日志,

做事务日志备份需要注意一下一点,如图所示:

备份模式请选择事务日志,备份路径自行决定

进入选项,将可靠性第1、2勾选,事务日志选择第二个,压缩属性可以不选择.点击确定备份成功,此时数据库将显示为正在还原状态

注意:如果备份失败,请检查该数据库是否正在被占用,如果是请kill。如果有数据库是AlwaysOn可用性数据库,同样也要先删除!

选好之后点确定,数据库开始备份,备份完成之后,数据库状态会变成正在还原…

6、还原完整备份

数据库处于正在还原状态,右键数据库--任务--还原--文件和文件组,选择最近的一次完整备份。

此时,需要在“选项”中选择第二种还原方式,具体如下图。

从字面意思就知道为什么要选择这种。

http://images2015.cnblogs.com/blog/43724/201611/43724-20161123110335128-17102158.png

7、还原备份的事务日志

完整备份还原完毕,接着要对事务日志进行还原,右键数据库--任务--还原--事务日志,如下图:

还原事务日志的时候需要特别注意“时间点”这个设置,其他不需要设置。

时间点选择为误删数据的时间点之前就可以恢复出误删的数据,所以之前强调要查看一下时间。如下图所示

点击确定,在确定等待还原成功,数据库变成可用状态。此时后再查询,如下图:

如果查询发现数据不是你想要的,那么可以重复上述的操作,从备份事务日志开始,然后最后选择时间点的时候在缩小范围。

以上,完整的演示了个人在恢复数据过程中的总结。当然前提是允许这样干,当然大型电子商务系统、高并发系统应该不适用,肯定也不会出现误删数据的情况,都有对应的解决方案避免此类情况发生。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值