没有备份的情况下恢复一个被drop的表的数据

ApexSQL Recover 恢复一个被drop的表的数据

转自:https://solutioncenter.apexsql.com/zh/%E6%B2%A1%E6%9C%89%E5%A4%87%E4%BB%BD%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E6%81%A2%E5%A4%8D%E4%B8%80%E4%B8%AA%E8%A2%ABdrop%E7%9A%84%E8%A1%A8%E7%9A%84%E6%95%B0%E6%8D%AE/

 

如果你曾经意外地执行过一个 DROP 语句并且你之前有一个数据库完整备份,在你drop掉表之前数据库没有发生任何改变,完整备份能让你简单地依靠覆盖数据库来恢复数据。 然而,事情并没有那么简单,因为往往数据库对象和数据在 DROP 语句执行之后都会发生变化又或者你没有做合理的备份,那么就没有方法去还原你丢失的数据。

那就是说,每一个 DROP 操作会被记录在SQL Server的事务日志里。这表示事务日志存储里足够的信息去回滚事务,并且如果数据库处于完整恢复模式下,对于 DROP 操作数据库备份能够支持时点还原。

正因为 DROP 操作是被记录到事务日志的,如果它被包含在一个显式,活动事务里那么是能够被回滚的。例如,下面的SQL 查询:

DROP TABLE Customer

SELECT *
FROM Customer

会显示出 Msg 208, Level 16, State 1 这样的结果,错误消息 因为 Customer 表已经被drop掉了

然而,下面的SQL 代码:

BEGIN TRAN
DROP TABLE Customer ROLLBACK
SELECT *
FROM Customer

会返回 Customer 表所有的记录行数因为 DROP 表操作被回滚了。

已经被 DROP 的表就不能回滚,很明显这个表存储的数据也会丢失。 那是不是说由于 DROP 操作在没有数据库完整备份的情况下你就不能够恢复丢失的数据了呢?

幸运的是,不是的,ApexSQL Recover在这里就能够发挥它的作用

ApexSQL Recover 恢复工具,能够恢复已删除的,截断了的(truncate,损坏的或者置疑的数据。它能恢复由于drop操作而丢失的对象和数据并且
可以还原删除了的和在线BLOBs文件让它能够像SharePoint 恢复那样完美。

要恢复由于 DROP 操作并且没有备份的数据丢失情况,只需要按下面的来做:

  1. 启动 ApexSQL Recover
  2. 选择恢复由于DROP操作导致丢失的数据
  3. 在Select the database to recover 的步骤:
    • 指定你想恢复数据的数据库所在的SQL实例 在server下拉框旁边
    • 指定SQL实例的验证方法(如果你选择SQL Server授权请选择一个合法的证书)
    • 在数据库下拉列表中指定数据库名

    然后点击“下一步”

  4. 在“ Are additional data sources available?”步骤, 选择“No additional transaction logs are available ”选择

  5. 在“Select a recovery action”步骤,选择“Save recovery script to file”选项并指定一个T-SQL脚本文件保存的路径,所有的已丢失数据都插入到这个脚本文件并保存起来

  6. 点击“恢复”

就像那样,你会获取到所有的你所丢失的数据,在没有一个单独SQL数据库备份的情况下。

翻译者: 林勇桦

July 2, 2015

ApexSQL Recover 恢复一个被drop的表的数据的更多相关文章

  1. [Oracle] “表中有数据,但select count(*)的结果为0”问题的解决办法

    一.问题 今天遇到了一个神奇的问题--表中有数据,但select count(*)的结果为0. 这个问题最初的表现形式是"查询报表没有分页". 最开始还以为是java端的问题.后来 ...

  2. MySQL没有备份怎么恢复被drop的表(利用undrop-for-innodb)

    介绍:     也许大家都难以理解,这么重要的数据为啥不备份(或者备份不可用)?而且还任性的drop table了.显然有备份是最好的,但是它们并不总是可用的.这种情况令人恐惧,但并非毫无希望.在许多 ...

  3. 没有备份怎么恢复被drop的表(利用undrop-for-innodb)

    介绍:     也许大家都难以理解,这么重要的数据为啥不备份(或者备份不可用)?而且还任性的drop table了.显然有备份是最好的,但是它们并不总是可用的.这种情况令人恐惧,但并非毫无希望.在许多 ...

  4. oracle-odu小试牛刀--恢复drop表的数据

         现在进入oracle12c时代:普遍用的oracle版本为10g以上.在oracle10g之后提供了一个回收的机制.所以恢复drop表的数据以及表很容易.当然需要打开回收机制以及是归档模式. ...

  5. 快速从mysqldump文件中恢复一个表

    快速从较大的mysqldump文件中恢复一个表到数据库中: 1.先获取目标表(md_gas_check_record)在文件中的位置 [publish@LF-PRO-DB-01 ~]$ cat dby ...

  6. oracle恢复一个数据表的方法

    今天提交给客户方一个sql脚本去跟新历史数据,结果客户那边的部署人员犯了一个错误,直接拿系统账号去部署,结果第一段代码没有执行成功,结果第二段代码却执行成功了,并且已经提交了的,....由于事前没有备 ...

  7. mysql如何从全备文件中恢复单个库或者单个表

    mysql如何从全备文件中恢复单个库或者单个表 在mysql dba的日常实际工作中,一个实例下有多个库,而我们常见的备份就是全库备份.那么问题就来了,如果需要恢复单个库或者单个表,怎么办了,网上有很 ...

  8. Mysql误删表中数据与误删表的恢复方法

    由于头两天面试时被问了这样一个问题,如果某同事误删了某个表,你该怎么恢复? 当时想了一下,因为博主没有遇到过这个问题,但是也多少了解一些,所以就回答通过mysql的binlog日志进行恢复. 面试官当 ...

  9. mysql InnoDB通过.frm和.ibd恢复表和数据

    ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据.撤销记录.修改buffer和双写buffer.如果file-per-table选项打开的话,该文件则不一 ...

随机推荐

  1. CSS3怎样实现超出指定文本以省略号显示效果

    作者:zhanhailiang 日期:2014-10-24 不做前端非常久了,今天从重构师那里了解到CSS3已经能够实现非常多以往必须通过JS才干实现的效果,如渐变,阴影,自己主动截断文本展示省略号等 ...

  2. 开放平台(接口)开发-1-天气API接口大全

     前几天有个公司让准备一下第二次面试.应聘的是IOS开发实习生,可是之前一直做android,IOS刚接触了一个月,会的不是非常多,所以决定做一个实际的项目展现给面试官,余同学给了个建议:能够做一 ...

  3. POJ 3667 Hotel(线段树)

    POJ 3667 Hotel 题目链接 题意:有n个房间,如今有两个操作 1.找到连续长度a的空房间.入住,要尽量靠左边,假设有输出最左边的房间标号,假设没有输出0 2.清空[a, a + b - 1 ...

  4. UVA 1262 Password 暴力枚举

    Password Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA. Original ID:  ...

  5. Codeforces Round #244 (Div. 2)——Checkposts

    题目链接 题意: 给定n个点,每一个点有一个权值的有向图.如今须要选定一些点,使得这些点权值和最小.且满足:假设i能到达j且j能到达i,那么i.j能够仅仅选一个 分析: 强联通模板题 //使用时仅仅更 ...

  6. Atitit.数据库分区的设计 attilax  总结

    Atitit.数据库分区的设计 attilax  总结 1. 分区就是分门别类的文件夹 (what)1 2. 分区的好处(y)1 3. 分区原则(要不要分区,何时分区)how2 4. 主要的分表类型有 ...

  7. C6455 CSL_EMIF详解

    C6455 CSL_EMIF详解 原网址http://www.61ic.com/Article/C6000/C64X/201303/47507.html C6455CSL详解 和DSP6455的EMI ...

  8. ubuntu 12.04 install gcc 4.8

    http://askubuntu.com/questions/271388/how-to-install-gcc-4-8-in-ubuntu-12-04-from-the-terminal sudo ...

  9. Django学习之项目结构优化

    其实就是采用包结构,比如: 目录models,包含__init__.py,a.py,b.py 然后将model class写在a和b中,但是这样的话,导入时就要改变了! from models imp ...

  10. java 使用Date类、Calendar类,实现增加日期

    Date date= new Date(); System.out.println("Date date= new Date()中的date: "+date); 输出对象date: ...