SQL Server 2005 数据误删除,无备份,日志还原求教

b哈利路亚d 2010-06-09 08:54:15
数据库用了一阵了,一直没有做备份,一不小心有人把导入真实数据的表删除了,这之前一次备份都没有做过。但是日志应该是完整的,感觉应该是能够根据日志还原数据的。网上只能够找到根据事务日志备份还原的方法,但是现在也晚了,请教一个能根据日志直接还原的办法。
貌似Log Explorer可以做,但是想必微软不至于有日志自己都恢复不了数据吧,请教下正统还原方法
...全文
1523 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2010-06-10
  • 打赏
  • 举报
回复
用Log explorer4.0以上的版本恢复
Andy-W 2010-06-10
  • 打赏
  • 举报
回复
数据库用了一阵了,一直没有做备份,一不小心有人把导入真实数据的表删除了,这之前一次备份都没有做过。但是日志应该是完整的,感觉应该是能够根据日志还原数据的。网上只能够找到根据事务日志备份还原的方法,但是现在也晚了,请教一个能根据日志直接还原的办法。

没有事务日志备份(交易式日志备份)+之前的完整备份,想通过日志还原,还原数据库是不行的。
dlcyj 2010-06-10
  • 打赏
  • 举报
回复
有日志,用LE,没有日志,找我。
b哈利路亚d 2010-06-09
  • 打赏
  • 举报
回复
我执行的操作有drop table 等操作,并且有变更表结构,所以Log Explorer 不知道改怎么弄了,谁给个详细说明,谢谢
b哈利路亚d 2010-06-09
  • 打赏
  • 举报
回复
伙计们都来帮忙啊
b哈利路亚d 2010-06-09
  • 打赏
  • 举报
回复
18楼你qq没找到呢
htl258 你那方法真不行,你完整备份和事物日志没差别是不能前滚的,你自己先试试
  • 打赏
  • 举报
回复
试试logexplorer,不行找我。 QQ号在csdn空间!
  • 打赏
  • 举报
回复
能不能给一个不小心删除日志文件的恢复啊
  • 打赏
  • 举报
回复
学习...
htl258_Tony 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lanwilliam 的回复:]
仔细看了2楼方法,不是还要先完整备份,再日志备份吗~
还以为我没仔细看漏了呢。

SQL code


-- 对数据库进行备份
BACKUP DATABASE db_test
TO DISK = 'c:\db_test.bak'
WITH FORMAT
GO

-- 创建测试表
CREATE TABLE db_test.dbo.tb_test(
ID int)
……
[/Quote]你现在再用现有的库完全备份一下,再还原一个操作。因为:还原日志必须在还原完全备份的基础上进行
b哈利路亚d 2010-06-09
  • 打赏
  • 举报
回复
log Explorer 只能一条条还原数据吗
没有办法指定一个时间点,回滚数据吗?
b哈利路亚d 2010-06-09
  • 打赏
  • 举报
回复
仔细看了2楼方法,不是还要先完整备份,再日志备份吗~
还以为我没仔细看漏了呢。


-- 对数据库进行备份
BACKUP DATABASE db_test
TO DISK = 'c:\db_test.bak'
WITH FORMAT
GO

-- 创建测试表
CREATE TABLE db_test.dbo.tb_test(
ID int)

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

-- 假设我们现在误操作删除了 db_test.dbo.tb_test 这个表
DROP TABLE db_test.dbo.tb_test
GO

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

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

--首先,备份事务日志(使用事务日志才能还原到指定的时间点)
BACKUP LOG db_test
TO DISK = 'c:\db_test_log.bak'
WITH FORMAT
GO

这不是先备份再事物日志还原吗
b哈利路亚d 2010-06-09
  • 打赏
  • 举报
回复
ok 我先验证一下2楼的方法好了
obuntu 2010-06-09
  • 打赏
  • 举报
回复
连一次全备份也没有吗?
那估计你的恢复模式是简单的。。
就是用logexplorer吧。
微软自己不支持从事务日志直接读东西。
dawugui 2010-06-09
  • 打赏
  • 举报
回复
--通过日志恢复数据库

USE master

--创建数据库
CREATE DATABASE db
ON PRIMARY(
NAME='db_data',
FILENAME= 'c:\db_data.mdf')
LOG ON(
NAME='db_log',
FILENAME ='c:\db.ldf')
GO

--创建表
CREATE TABLE db.dbo.ta(id int)
INSERT db.dbo.ta SELECT id FROM sysobjects
GO
--做文件组备份
BACKUP DATABASE db TO DISK='c:\db.bak' WITH FORMAT

--备份后,再做数据处理
CREATE TABLE db.dbo.tb(id int)
INSERT db.dbo.tb SELECT id FROM sysobjects
GO

/*--下面演示了破坏数据文件的处理,这些操作在操作系统中进行

1. 停止SQL Server服务(msqlserver服务)
2. 删除文件 c:\db_data.ndf (模拟破坏)
3. 重新SQL Server服务,此时数据库DB置疑
--*/
GO

--下面演示了如何恢复数据
--首先要备份当前日志
BACKUP LOG db TO DISK='c:\db_log.bak' WITH FORMAT,NO_TRUNCATE
--利用文件组备份恢复破坏的文件
RESTORE DATABASE db FROM DISK='c:\db.bak' WITH NORECOVERY
--还原到日志点
RESTORE LOG db FROM DISK='c:\db_log.bak' WITH RECOVERY
--显示已经恢复的数据
SELECT COUNT(*) FROM db.dbo.ta
SELECT COUNT(*) FROM db.dbo.tb
GO

--删除测试
DROP DATABASE db
htl258_Tony 2010-06-09
  • 打赏
  • 举报
回复
你右键数据库-->属性-->选项-->恢复模式

看恢复模式中的选项是"完整"还是"简单",如果是"完整"就可以操作.
htl258_Tony 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lanwilliam 的回复:]
1楼的方法我倒是知道,但是没有微软的解决方案吗?
2楼的那个方法需要之前有完整备份,现在没有完整备份,即使做事物日志也晚了。
3楼恢复质疑我记得停下服务从新附加好像就行
[/Quote]2L的方法不需要之前有完整备份啊.只需要数据库的恢复模式为完全就可以了.
b哈利路亚d 2010-06-09
  • 打赏
  • 举报
回复
Log Explorer 确实是可以的,但是微软应该也有解决方案吧
听同事说先进入单用户模式,再还原就行,但是具体方法他记不得了(汗一个)
所以过来试探一下
zhoubupt 2010-06-09
  • 打赏
  • 举报
回复
日志文件真的可以还原么?学习下
b哈利路亚d 2010-06-09
  • 打赏
  • 举报
回复
1楼的方法我倒是知道,但是没有微软的解决方案吗?
2楼的那个方法需要之前有完整备份,现在没有完整备份,即使做事物日志也晚了。
3楼恢复质疑我记得停下服务从新附加好像就行
加载更多回复(3)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧