没有备份的情况下恢复一个被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

最新文章

  1. Windows访问Ubuntu14.04远程桌面全攻略
  2. Nginx中的进程亲和性 affinity
  3. shell脚本入门及基本元素
  4. Centos7安装rabbitmq server 3.6.0
  5. iOS推送失败的可能问题汇总
  6. yii2数据修改|联查
  7. 使用curl操作openstack swift
  8. AlphaToCoverage solution
  9. 异步任务(AsyncTask)
  10. Java---网络编程(4)-C/S-B/S
  11. div+css模式编写html静态网页例子_仿照网页制作
  12. java下载文件
  13. 【JAVAWEB学习笔记】22_ajax
  14. Promise (1) 如何使用Promise
  15. 前台js接收后台的json数据
  16. Http请求中请求头Content-Type讲解
  17. 主机可以ping通虚拟机,但是虚拟机ping不通主机的方法(转)
  18. Hadoop权威指南
  19. PHP 获取上月,本月,近15天,近30天日期
  20. jmap MAT内存溢出实践

热门文章

  1. PHP 命名空间namespace 和 use
  2. Atitit. 包厢记时系统 的说明,教程,维护,故障排查手册v2 pb25.doc
  3. Python内存管理:垃圾回收
  4. C/C++ 错误笔记-如果要释放内存,必须拿到内存的首地址进行释放
  5. 用lua nginx module搭建一个二维码
  6. SQL数据库查询练习题
  7. flume A simple example
  8. Java并发编程(十一)实例封闭
  9. PHP编译选项
  10. Magical GCD UVA 1642 利用约数个数少来优化 给定n个数,求使连续的一段序列的所有数的最大公约数*数的数量的值最大。输出这个最大值。