通过日志恢复数据库问题

daview 2008-03-06 08:33:07
我的SQL SERVER服务器由于电源故障导致异常关闭,重新开机后,数据库不能使用,从数据库文件恢复后,报告说跟日志不一致,失败。根据网上相关解决方案使数据库置疑后重建日志,发现数据库有错误,通过相关修复命令(dbcc checkdb/checktable)失败。

之前没有做数据备份、单机(有每月一次的备份,但系统管理员粗心,想恢复一个月前的备份内容,发现之前的备份失败),唯一有的就是出现故障开机后的损坏的mdf和ldf文件。

通过logexplorer修复,不能打开ldf文件(需要跟数据库一致)、重建日志后不能用原有的ldf文件替换。

拜托了,很紧急,昨天已经通宵了一个晚上了。

...全文
271 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2008-03-06
  • 打赏
  • 举报
回复
重建日志后不能用原有的ldf文件替换。

--------------------- 看起来你已经修复可用了, 还要原来的 ldf 干嘛?
daview 2008-03-06
  • 打赏
  • 举报
回复
通过logexplorer附加ldf报告"invalid or corrupt log file, E"
daview 2008-03-06
  • 打赏
  • 举报
回复
非常感谢 dawugui 的解答。

我的日志文件是一个ldf文件,也就是说是系统故障后,直接把ldf以文件的形式备份出来的,不是通过系统的备份功能备份的日志,这个该怎样处理才可以把日志文件附加进去或让logexplorer能打开这个日志?

当我对错误的mdf文件以重建日志的形式恢复后,数据库的数据是有,但有些损坏了,刚好损坏的是比较关键的内容,所以想从ldf中恢复,现在,通过logexplorer工具没有办法附加这个ldf文件。
dawugui 2008-03-06
  • 打赏
  • 举报
回复
--通过日志恢复数据库

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

dlcyj 2008-03-06
  • 打赏
  • 举报
回复
直接修复MDF文件试试
w2jc 2008-03-06
  • 打赏
  • 举报
回复
帮顶,关注
daview 2008-03-06
  • 打赏
  • 举报
回复
恩,不能确认,发现MDF文件通过重建日志启动后,中间数据内容有错误,dbcc报告有错误。

ldf文件不能确认是否有错误,但ldf文件我没有办法跟数据库绑定上去,要不还可以通过logexplorer进行日志恢复。
kelph 2008-03-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 daview 的帖子:]
唯一有的就是出现故障开机后的损坏的mdf和ldf文件。


[/Quote]
有的还是损坏的,汗
zjcxc 2008-03-06
  • 打赏
  • 举报
回复
那估计很难
daview 2008-03-06
  • 打赏
  • 举报
回复
数据库有错误,中间几个大表数据都大量丢失,而且是关键数据,所以还要想办法恢复过来。

22,209

社区成员

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

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