开发者社区> 黑冰中国> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

删库不用跑路:Sql Server 利用日志恢复被删除的表及数据

简介: 相信不少人都有删库或被删库的经历。当事情发生后,是跑路,还是自首?相信每个人都没有想过这两个选项,大家首先想到的是如何恢复数据。 网络图,侵删 今天我们将进行一个实验,试图在删库后悄悄的恢复数据,然后假装什么都没发生,继续混点。
+关注继续查看

相信不少人都有删库或被删库的经历。当事情发生后,是跑路,还是自首?相信每个人都没有想过这两个选项,大家首先想到的是如何恢复数据。

img_7e549d8442df58f05b3dd3a330f43b49.png
网络图,侵删

今天我们将进行一个实验,试图在删库后悄悄的恢复数据,然后假装什么都没发生,继续混点。

实验目的

通过Microsoft Sql Server 的数据库日志,恢复被删的表及数据。

此实验过程适用于以下场景:

  • 数据被删
  • 表被删
  • 错误的UPDATE
  • 错误的表结构更改

实验条件

  • Microsoft Sql Server 2008 R2
  • 数据库有很久以前的备份
  • 数据库最新的数据没有备份
  • 数据库还在,表没了
  • 数据库恢复模式是“完整”级别

实验过程

1、首先,我们创建一个数据库,创建一个表,弄点数据进去,并做一个备份。

特别强调,我们数据库的恢复模式应为“完整”,不要为了节省磁盘空间,而去收缩数据库日志,或把日志设为简单。

img_8ab9f9e03eac9fcd4fc17bd697130207.png
确保MSSQL的恢复模式起码是完整级别的
img_926e4abb5cf0ff4386272bc95313e22b.png
输入测试数据
img_721c6cfb93f2e00f4c544efb5358063c.png
备份

2、下面,我们假装业务在继续,又有新的数据产生了,这时候我们要记录一个时间点,即表或数据被删除前一刻的时间。

img_69ffd5d47860de1c9e740cd55b57c462.png
输入新的数据

记录时间点,稍微缓几分钟,然后删除数据,记住,这波数据是没有备份的。

img_e08ef386e4c3e00046246875e03b774e.png
删除

3、好了,假装有客户投诉发现数据异常,这时候我们发现数据不见了,库里面空如也,不要慌,先把日志备份一波。

img_3aa37db2c370ed74d801e207741c54d0.png
备份日志

4、把以前的旧备份,还原为一个新的库,切记,不要弄到旧库上去了,不然哭不死你。

img_2bde52b6a8e4417738411639e6fdd291.png
还原为一个新库

5、敲黑板,重点,还原的时候,在选项中选择图中红框标记的那项,这样我们才能在下一步中进行事务日志还原。

img_b7a43474c091f76b83393f27a6a51739.png
执行还原到最近的备份

6、这时候,新的数据库显示为(XXX正在还原),右键——任务——还原——事务日志

img_d9a1248b5fd598a6ce82c5fe01c2a336.png
显示还原中,右键

7、选择我们刚才用SQL备份的那个日志,设置时间点为我们刚才记下的时间。还原


img_5b467432c63479b986707bc287e10f6d.png
还原事务日志
img_b234ec2d03b09896536d04910eb4c122.png
还原时间点为:17:11:50

PS:由于实验途中被一波电话打断几小时,回来又重搞了一遍,有些图和内容有点不匹配,以后有空再改,见谅

img_df38c509af496b7eb719f7e3a18085a5.png
数据回来了

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MS SQL数据批量备份还原(适用于MS SQL 2005+)
原文:MS SQL数据批量备份还原(适用于MS SQL 2005+) 我们知道通过Sql代理,可以实现数据库的定时备份功能;当数据库里的数据库很多时,备份一个数据库需要建立对应的定时作业,相对来说比较麻烦; 还好,微软自带的osql工具,比较实用,通过在命令行里里输入命令,也能实现数据库备份的功能;如果能通过sql语句来生成一个批处理文件,那就方便了; 下面即是生成批处理文件的sql脚本,通过它可以实现:运行一个批处理文件,备份数据库服务器上的所有数据库到指定目录。
928 0
一条SQL语句获取具有父子关系的分类列表(mysql)
有如下表数据: 获取“菜单”分类的子分类数据列表: SELECT a.cat_id, a.cat_name, a.sort_order AS parent_order, a.cat_id, b.
2285 0
T-SQL查询:语句执行顺序
原文:T-SQL查询:语句执行顺序 读书笔记:《Microsoft SQL Server 2008技术内幕:T-SQL查询》   ===============  T-SQL查询的执行顺序 ===============      =============== T-SQL查询的示意图...
789 0
sql语句延时执行或者是指定时间执行
--使用waitfor语句延迟或暂停程序的执行 --waitfor{delay'time'|time 'time'} delay是指间隔时间 最长到24小时 time是指定时间执行   waitfor delay '00:00:10' --延迟10秒 A. 使用 WAITFOR TIME 以下示例在晚上 10:20 (22:20) 执行存储过程 sp_update_job。
943 0
JAVA中处理事务的程序--多条更新SQL语句的执行(包括回滚) .
转自:http://blog.csdn.net/fafeiboy/article/details/2734889  在与数据库操作时,如果执行多条更新的SQL语句(如:update或insert语句),在执行第一条后如果出现异常或电脑断电, 则后面的SQL语句执行不了,这时候设定我们自己提交SQL语句,不让JDBC自动提交,格式为: conn.
1059 0
[20121101]tkprof抽取sql语句.txt
[20121101]tkprof抽取sql语句.txt 有时候跟踪分析sql语句,并不是要看里面的递归的执行,或者性能问题.而是要收集跟踪命令的执行序列. 查看tkprof的帮助: Usage: tkprof tracefile outputfile [expl...
771 0
SQL语句整理
1、问题贴见(这里一个注意点为:coalesce(字段,0) 使用,即判断这个字段是否为NULL,如果为NULL,则为0) http://topic.
624 0
SQL Server功能性语句
1 注释符注释是指程序代码中不执行的文本字符串,是对程序的说明,可以提高程序的可读性,使程序代码更易于维护,一般嵌入在程序中并以特殊的标记显示出来。在Transact-SQL中,注释可以包含在批处理、存储过程、触发器中,有两种类型的注释符:  --:这是ANSI标准的两个连字符组成的注释符,用于单行注释。
628 0
+关注
黑冰中国
从业企业信息化建设10年,主要为政府、企业提供信息化解决方案,近年大数据与物联网崛起,政企对数据利用的关注度越来越高,工作重心也从传统的信息化转变为提供数据分析、机器学习及基础设施建设方案方面。
16
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载