恢复SQL2005误删除的数据

姑娘还要辣油啊

姑娘还要辣油啊

2016-02-19 18:18

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

由于同事写错作业脚本,导致昨天晚上系统当中一张重要表的大概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

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

--对数据库进行备份

BACKUP DATABASE Db TO DISK='c:db.bak' WITH FORMAT

GO 

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

--创建测试表

CREATE TABLE Db.dbo.TB_test(ID int) 

--延时1秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)

WAITFOR DELAY '00:00:01'

GO 

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

--假设我们现在误操作删除了 Db.dbo.TB_test 这个表

DROP TABLE Db.dbo.TB_test 

--保存删除表的时间

SELECT dt=GETDATE() INTO #

GO

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

--在删除操作后,发现不应该删除表 Db.dbo.TB_test 

--下面演示了如何恢复这个误删除的表 Db.dbo.TB_test

--首先,备份事务日志(使用事务日志才能还原到指定的时间点)

BACKUP LOG Db TO DISK='c:db_log.bak' WITH FORMAT

GO 

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

--接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)

RESTORE DATABASE Db FROM DISK='c:db.bak' WITH REPLACE,NORECOVERY

GO 

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

--将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早

DECLARE @dt datetime

SELECT @dt=DATEADD(ms,-20,dt) FROM #  --获取比表被删除的时间略早的时间

RESTORE LOG Db FROM DISK='c:db_log.bak' WITH RECOVERY,STOPAT=@dt

GO 

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

--查询一下,看表是否恢复

SELECT * FROM Db.dbo.TB_test 

/*--结果:

ID         

-----------

(所影响的行数为 0 行)

--*/

--测试成功

GO

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

--最后删除我们做的测试环境

DROP DATABASE Db

DROP TABLE #

展开更多 50%)
分享

猜你喜欢

恢复SQL2005误删除的数据

编程语言 网络编程
恢复SQL2005误删除的数据

如何恢复误删除文件

电脑入门
如何恢复误删除文件

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

SQL Server2008 数据库误删除数据的恢复方法分享

编程语言 网络编程
SQL Server2008 数据库误删除数据的恢复方法分享

sql2005 数据同步方法

编程语言 网络编程
sql2005 数据同步方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

手误删除图片和文件怎么恢复

电脑网络
手误删除图片和文件怎么恢复

SQL2005数据库安装教程

电脑入门
SQL2005数据库安装教程

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

在SQL Server 中如何得到刚刚插入的标识值

在SQL Server 中如何得到刚刚插入的标识值

修改PowerPoint 2007最近使用的文档数目

修改PowerPoint 2007最近使用的文档数目
下拉加载更多内容 ↓