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