恢复SQL2005误删除的数据

2016-02-19 18:18 5 1 收藏

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - 编程语言 】

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

但是备份后没有清除日志,这个给恢复留了最后一丝希望。最后只能寄希望于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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

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 #

来源:https://www.tulaoshi.com/n/20160219/1617215.html

延伸阅读
1、 代码如下: select top 10 * from ( select top (@Page * 10) ROW_NUMBER() OVER (order by id) as RowNum, id, username from Guest where username = 'user' ) as T where RowNum ((@Page - 1) * 10) 2、 代码如下: select * from ( select ROW_NUMBER() OVER(order by id) as RowNum,id,username from Guest where user...
SQL2005安装安装步骤 安装Microsoft SQL Server 2005 数据库步骤: 第一步:将Microsoft SQL Server 2000安装光盘放入光驱中,在光驱目录下,点击Setup.exe安装程序开始安装过程,        或使用镜像安装文件。选择“基于X86的操作系统”。         第二步:选...
标签: 服务器
CentOS 6误删除的boot分区该如何还原恢复   CentOS 6误删除的boot分区该如何还原恢复         在CentOS 6系统中,因为不小心或操作失误导致boot分区被删除,遇到这种情况是否能够恢复被删除的boot分区呢?其实是可以的,下面随小编一起来了解下吧。 1.首先利用centos6镜像进入linux rescue救援模式。 ...
标签: 手机
1.由于大部分手机通常将照片保存在手机SD卡DCIM或Camera等目录下,因此我们可以借助相关恢复软件实现恢复操作。据此我们可以采用以下方法来恢复手机误删照片。 2.将手机通过USB数据线与电脑相连,同时打开手机中的“USB存储设备”开关或“大容量存储设备”。通常我们可以通过下拉通知栏来找到“USB存储设备”开关。当然我们也可以利...
彩云能否找回误删除的文件?   回收站是用户删除文件的临时存储地,以防用户在不小心的情况下删除某些文件。用户发生误删除操作时,可到回收站中将误删除的文件还原。 如果在回收站中选择了彻底删除或全部清空,文件就会被永远删除,不能再找回,所以请谨慎使用全部清空或彻底删除功能。

经验教程

48

收藏

81
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部