日期:2014-05-17  浏览次数:20579 次

sqlserver 2005 备份文件无法恢复
备份文件将近47G,由于突然停电,后来数据库显示正在恢复。
我进行了如下的操作,停止服务,删除了数据库,之后用备份的文件进行恢复,在选择文件的时候就出现了如下错误:

只有停电之前的两个备份文件,停电之后当天的备份文件大小为0,觉得原文件出现了错误,现在的问题,停电之前的两个备份文件都无法恢复,验证那一步就过不去了。网站急着用呢,可是数据库恢复不了。其他的数据库能恢复,主要是这个数据库特别大。是文件坏了吗,还是文件太大了,如何解决呀?

------解决方案--------------------
--#1.停电后,再启动。数据库显示正在恢复,是一种正常状态,等待事务回滚即可。楼主应该等待一段时间后再看。
--#2.删除数据库前,应该把mdf,ldf文件COPY出来,备份一下。哎
--#3.下面再说说早些的两个备份不能用的问题:你的备份是*.bak文件吧。用下面SQL还原一下试试:
--设置还原参数
declare 
@BackupFilePath nvarchar(100),   --备份文件所在路径
@NewDataName nvarchar(100),  --新数据库名称
@NewMdfPath nvarchar(120),  --新.Mdf数据文件存储路径
@NewLdfPath nvarchar(120)        --新.Ldf日志文件存储路径

set @BackupFilePath = 'E:\数据库备份.bak'
set @NewDataName = 'New_Databasename' --用备份新建一个数据库
set @NewMdfPath = 'D:\test\' + @NewDataName + '.mdf'  --新数据库Data路径,一定不能和其它路径重复,否则会覆盖
set @NewLdfPath = 'D:\test\' + @NewDataName + '_log.ldf'  --新数据库Log路径,一定不能和其它路径重复,否则会覆盖

--#1.查看备份文件中的逻辑文件名
restore filelistonly from disk = @BackupFilePath  --查询出备份文件中Data文件及Log文件的名称,用于Restore Database时MOVE x TO y 中的x参数

--#2.2 还原数据库(还原成一个新数据库)
restore database @NewDataName from disk = @BackupFilePath
WITH MOVE '#1中查出的mdf逻辑文件名' TO @NewMdfPath,
 MOVE '#1中查出的ldf逻辑文件名' TO @NewLdfPath

go

------解决方案--------------------
引用:
谢谢提醒,真是有些删后悔了。正在用命令行进行恢复,没有出错。还有一个问题,就是我的数据库日志文件限制了大小,怎么还无限增大呢?现在已经740G还多,数据库文件是48个G多,怎么不让日志文件增大呢?

#1.如果你的数据库恢复模式是:完整模式,且从来不曾做过日志备份,日志文件就一直在涨,不可收缩,不可回收。
#2.虽然设置了大小,但如果遇见下面情况:完整模式且无日志备份过;有复制且未完成;有未提交的事务。则从那个最小LSN往后的日志都不会被被回收。
#3.把数据库恢复模式改成:简单模式。收缩一下日志文件,一般都可以搞定。你试试
------解决方案--------------------
由于每个修改操作都会记日志(这个是必须的),即使设置了大小,由于不能利用旧的日志空间,就只能增长了。
------解决方案--------------------
引用: