恢复SQL2005误删除的数据

由于同事写错作业脚本,导致昨天晚上系统当中一张重要表的大概2万数据被删除。早上发现时的情况是,半夜(误操作之后)备份过数据,昨天的备份已经被新的备份取代而且没有日志备份..貌似这个策略不太合理。这个结果就是,没有误操作之前的全库备份,无法通过RESTORE LOG 来恢复。

但是备份后没有清除日志,这个给恢复留了最后一丝希望。最后只能寄希望于Log Explorer。据我所知的是Log Explorer不支持SQL2005,以前在2000下我还翻译过他的英文文档,参考http://blog.csdn.net/jinjazz/archive/2008/05/19/2459692.aspx 

通过google,发现最新版的是可以用在SQL2005下的,但是很少有下载,还好有csdn.. http://download.csdn.net/source/467751。

最终还是顺利恢复了这批数据。另外还有两篇介绍如何使用sql日志的文章可以参考。

11.3.5 数据还原到指定时间点的处理示例.sql
--创建测试数据库
CREATE DATABASE Db
GO
--对数据库进行备份
BACKUP DATABASE Db TO DISK='c:db.bak' WITH FORMAT
GO
--创建测试表
CREATE TABLE Db.dbo.TB_test(ID int)
--延时1秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)
WAITFOR DELAY '00:00:01'
GO
--假设我们现在误操作删除了 Db.dbo.TB_test 这个表
DROP TABLE Db.dbo.TB_test
--保存删除表的时间
SELECT dt=GETDATE() INTO #
GO
--在删除操作后,发现不应该删除表 Db.dbo.TB_test
--下面演示了如何恢复这个误删除的表 Db.dbo.TB_test
--首先,备份事务日志(使用事务日志才能还原到指定的时间点)
BACKUP LOG Db TO DISK='c:db_log.bak' WITH FORMAT
GO
--接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)
RESTORE DATABASE Db FROM DISK='c:db.bak' WITH REPLACE,NORECOVERY
GO
--将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早
DECLARE @dt datetime
SELECT @dt=DATEADD(ms,-20,dt) FROM # --获取比表被删除的时间略早的时间
RESTORE LOG Db FROM DISK='c:db_log.bak' WITH RECOVERY,STOPAT=@dt
GO
--查询一下,看表是否恢复
SELECT * FROM Db.dbo.TB_test
/*--结果:
ID     
-----------
(所影响的行数为 0 行)
--*/
--测试成功
GO
--最后删除我们做的测试环境
DROP DATABASE Db
DROP TABLE #

时间: 2024-08-20 16:21:42

恢复SQL2005误删除的数据的相关文章

恢复SQL Server被误删除的数据(再扩展)

原文:恢复SQL Server被误删除的数据(再扩展) 恢复SQL Server被误删除的数据(再扩展)   大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的恢复 这个是一个缺陷,本人决定对这个存储过程扩展一下,支持对log backup文件里的delete语句进行恢复   实验步骤   1.首先先准备好测试表和测试语句 USE [sss] GO --建表 CREATE TABLE testdelete

通过sqlserver日志恢复误删除的数据

原文:通过sqlserver日志恢复误删除的数据       如果你已经急的焦头烂额,看到这篇文章的时候,请你换个坐姿,深呼吸几次,静下心来将这篇文章读完,也许你的问题迎刃而解.     我遇到的情况是这样的,网站被植入木马,盗取了我的web.config文件,web.config文件里面的数据库连接字符串没有加密,而我的数据库远程连接又没有做IP限制,黑客通过数据库客户端连上我的数据库后,将所有的表都Delete掉了,所以大家一定要有一个好习惯将数据库连接字符串加密或者对远程访问数据库的IP作

通过360安全卫士恢复电脑中误删除的数据文件方法

1.在360安全卫士找到功能大全区域,点击"更多"选项,在功能大全界面下,找到"文件恢复"图标.     2.打开"360文件恢复"功能,选择需要恢复文件所在的磁盘,接下来点击"开始扫描",等待磁盘扫描结束.     3.扫描结束后,360文件恢复功能会显示丢失文件的情况,大家可以根据丢失文件的类型,先通过文件类型查找,再通过文件名搜索方式看看能否找到对应的丢失文件及路径.     4.尝试使用360文件恢复功能恢复名为mga

怎样完整地恢复被误删除的U盘文件

  U盘中数据中病毒或者是被误删了 怎么办?下面总结了一下经验:才能快速.完整地恢复被误删除的文件. 打开该,单击"删除恢复"按钮,这时会弹出一个"目的警告"对话框,单击"确定"按钮进入"删除恢复"对话框,在左侧选择要恢复文件的磁盘分区.如果知道误删除文件的类型,可在右侧"文件过滤器"下方选择恢复文件的类型,也可直接在"文件过滤器"的文本框中以"*.扩展名"的形式添加

怎么快速完整地恢复被误删除的U盘文件经验总结

U盘中数据中病毒或者是被误删了怎么办?下面总结了一下经验:才能快速.完整地恢复被误删除的文件. 打开该,单击"删除恢复"按钮,这时会弹出一个"目的警告"对话框,单击"确定"按钮进入"删除恢复"对话框,在左侧选择要恢复文件的磁盘分区.如果知道误删除文件的类型,可在右侧"文件过滤器"下方选择恢复文件的类型,也可直接在"文件过滤器"的文本框中以"*.扩展名"的形式添加文件类

log explorer-为恢复sql server2005数据库数据,安装Log Explorer时报错,求大神帮忙看看。

问题描述 为恢复sql server2005数据库数据,安装Log Explorer时报错,求大神帮忙看看. 解决方案 1.Lumigent Log Explorer for SQL Server v4.0.2 特别版下载地址http://down.chinaz.com/soft/7887.htm Log Explorer for SQL Server 4.2 注册码 wv5rc-uxvpz-e33-nr4694qs2 2.Log Explorer for SQL Server v4.0.2 安

数据恢复-如何恢复强行删除的数据?

问题描述 如何恢复强行删除的数据? 大家都知道在删除Windows计算机数据的过程中如果没有清空回收站那么磁盘中的空间也是不能够被重新使用的所以为了更快的获取磁盘未使用空间很多Windows计算机用户都会选择通过使用"Shift" + "Delete"组合键来强行删除Windows计算机中丢失的数据.不过虽然强行删除数据可以让大家更快的获取磁盘未使用空间但是一旦大家操作失误强行删除了重要的数据那么大家一定会觉得非常苦恼非常希望能够将Windows计算机被强行删除的数

Oracle误删除表数据后的数据恢复详解_oracle

Oracle误删除表数据后的恢复详解   测试环境: SYSTEM:IBM AIX 5L                         Oracle Version:10gR2   1. undo_retention参数的查询与修改 使用show parameter undo命令查看当前的数据库参数undo_retention设置. 显示如下: SQL> show parameter undo NAME                                 TYPE        V

恢复格式化U盘数据的方法

  U盘就被格式化了,那么有没有什么方法能够恢复被格式化的U盘数据呢?答案是肯定的,今天就教给大家一种恢复格式化U盘数据的方法. 准备工作 把存有JPG格式图片的U盘进行格式化. 步骤/方法 打开Recover My Files数据恢复软件,然后单击"开始搜索". 这时会出现一个对话框,单击"完全格式化恢复",然后点击"下一步"操作. 此时出现一个对话框,点"确定". 这时会出现恢复向导,选择U盘的盘符,点击"下一步