首页 > [转]实战 SQL Server 2008 数据库误删除数据的恢复

[转]实战 SQL Server 2008 数据库误删除数据的恢复

实战 SQL Server 2008 数据库误删除数据的恢复

关键字:SQL Server 2008, recover deleted records

今天有个朋友很着急地打电话给我,他用delete语句误删除了SQL Server 2008数据库中两个表中的所有记录,而这个数据库之前没有任何备份。让我帮他解决一下,不然他要赔偿客户很多钱。

SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:

1. 至少有一个误删除之前的数据库完全备份。

2. 数据库的恢复模式(Recovery mode)是“完整(Full)”。

针对这两个前提条件,会有三种情况:

情况一、如果这两个前提条件都存在,通过SQL语句只需三步就能恢复(参考文章),无需借助第三方工具。

  a) 备份当前数据库的事务日志:BACKUP LOG [数据库名] TO disk= N'备份文件名' WITH NORECOVERY

  b) 恢复一个误删除之前的完全备份:RESTORE DATABASE [数据库名] FROM DISK = N'完全备份文件名' WITH NORECOVERY,  REPLACE

  c) 将数据库恢复至误删除之前的时间点:RESTORE LOG [数据库] FROM  DISK = N'第一步的日志备份文件名' WITH   STOPAT = N'误删除之前的时间点' , RECOVERY

情况二、如果第1个前提条件不存在,第2个前提条件存在,需要借助第三方工具。

情况三、如果第2个前提条件不存在,无法恢复。所以,一定要将数据库恢复模式设置为“完整(Full)”。

我现在面临的是第二种情况,需要找第三方工具。

开始找的是Log Explorer for SQL Server,不支持SQL Server 2008。

后来找的是SQL Log Rescue,也不支持SQL Server 2008。

接着找到的是SysTools SQL Recovery,支持SQL Server 2008,但需要购买,Demo版并没有数据恢复功能。

最终在officerecovery.com上找到Recovery for SQL Server,虽然也是商业软件,需要购买,但Demo版可以恢复数据,只要数据库文件不超过24Gb。幸好朋友的数据库文件不大,用它完成了误删除数据的恢复。

下面分享一下用Recovery for SQL Server进行恢复的操作步骤:

1. 运行Recovery for SQL Server

2. 点击菜单中的 File > Recover,选择要恢复的数据库的数据文件(.mdf)

3. Next > Next,进入 Recovery Configuration 界面,选择Custom(选择了Custom才可以选择从日志中恢复误删除的数据)。

4. Next 进入 Recovery options 窗口,选中 Search for deleted records,并选择要恢复的数据库的日志文件路径(log file path)。

5. Next 并选择目标文件夹(Destination folder),用于存放恢复过程中生成的SQL语句与bat文件。

6. 点击Start,开始恢复操作(在上一步选择的目标文件夹中生成相应的SQL文件与Bat文件),然后,出现 SQL Server Database Creation Utility 窗口。

7. Next,选择被恢复数据存放的目标数据库。

8. Next, 选择 Import availiable data from both database and log files

9. Next, Next, 然后就完成数据的恢复!

接下来,就是庆祝胜利!庆祝胜利最好的方式就是写一篇博客!

转载于:https://www.cnblogs.com/jaday/p/3620353.html

更多相关:

  •  继昨天发出的DPM2012保护恢复Echange2010之后,今天将为大家带来DPM2012保护恢复sharepoint2010场,以便大家学习交流。 废话不多说,下面开始吧。 一、搭建MOSS2010,新建场(略) 二、新建个人网站,添加文档(略)     三、sharepoint server上的准备: 在DPM2012上安...

  • Python是一种计算机程序设计语言,它是一种动态的、面向对象的脚本语言。它是一种跨平台的,可以运行在 Windows,Mac和 Linux/Unix系统上。在日常使用中需要对大量数据进行数据分析,那么就必然用到数据库,我们常用的数据库有 SQL Server , MySQL , Oracle , DB2 , SQLite ,Hive...

  • 在VS下用C语言连接SQLServer2008 原文:在VS下用C语言连接SQLServer2008 step1:启动SQLSERVER服务 step2:打建立数据库test,在test库中建立test表(a varchar(200),b varchar(200))  step3:建立系统DSN,开始菜单 ->运行 ->o...

  • 打开SQL Server Configuration Manager,在SQL server配置管理器展开SQL server 2005网络配置-->SQLEXPRESS 的协议-->双击TCP/IP协议-->ip地址将1433端口启用,重启下MSSQL服务才能生效,示例图: 重启下MSSQL服务才能生效 转载于:https:/...

  • 一.ITL(Interested Transaction List):   ITL(Interested Transaction List)是Oracle数据块内部的一个组成部分,位于数据块头(block header),itl由xid,uba,flag,lck和scn/fsc组成,用来记录该块所有发生的事务,一个itl可以看作是一条...

  • 转自http://blog.chinaunix.net/space.php?uid=16981447&do=blog&cuid=430716做了简单的格式整理,加入了一点点原创的东西。Oracle9i引入了MERGE命令,你能够在一个SQL语句中对一个表同时执行inserts和updates操作. MERGE命令从一个或多个数据源中选...

  • 【知识点梳理】 ________________________ 一、熟练Spring操作数据库 bean → IoC:控制反转 完成实现类的单例生成 property → DI:依赖注入 各种属性(属性类ref) DI 注入方式 → 1、setter注入;2、构造器注入;3、注解注入 _______________________...

  • 安装数据库 安装数据库的时候我们需要安装三个软件,使用下面的命令,可能还会出现一些问题,关于数据库的安装,大家可以上网自行百度 yum install mysql yum install mysql-server yum install mysql-devel 我个人的理解大概是这个样子的,我们首先需要在自己的操作系统里面安装m...

  • 1.SQL的定义 结构化查询语言(Structured Query Language)简称SQL,SQL语句就是对数据库进行操作的一种语言。   2.SQL的作用 通过SQL语句我们可以方便的操作数据库中的数据、表、数据库等。 3.SQL的分类 1. DDL(Data Definition Language)数据定义语言用来定义数据库...

  • 云计算时代的高可用数据库是可扩展、容错且与任何私有云或公共云兼容的数据库实例。它们旨在提供业务连续性,而不会因任何类型的硬件或网络故障而导致用户体验的影响。其核心设计原则是消除任何单点故障,并提供平稳的故障转移体验。 公共云和私有云使企业能够摆脱容易出错的传统架构,并运行具有可靠性为5个9和6个9的应用程序。业务应用程序可以按需、即...

  • java的代码就不说了,毕竟不是我的主业。 1.c#数据库连接池Hikari.    (1)动态加载各类数据库驱动   (2)支持简单配置文件 (3)支持按照名称多数据库调用 (4)使用简洁  单数据库使用: HikariConfig hikariConfig = new HikariConfig(); hikariConfig.L...