每日备份用如下:
declare @filename char(13)
set @filename = convert(char(13) ,getdate(),120 ) declare @pname varchar(500)
set @pname = 'D:\database_backups\backday1\'+@filename+'.abc'
backup database drdata to disk = @pname将得到的.abc文件烤到本地,新建一空数据库在其上强制还原,过很长时间以后(数据库有十几G)提示出现"内部一致性错误".但是新建的那个空数据库大小已变为十几G,而且显示数据库为灰色(正在装载),然后就没反应了.
用RESTORE VERIFYONLY FROM disk = ''D:\database_backups\backday1\2007-08-23 04.abc'提示备份集有效。求助怎样才能恢复这个数据库!
declare @filename char(13)
set @filename = convert(char(13) ,getdate(),120 ) declare @pname varchar(500)
set @pname = 'D:\database_backups\backday1\'+@filename+'.abc'
backup database drdata to disk = @pname将得到的.abc文件烤到本地,新建一空数据库在其上强制还原,过很长时间以后(数据库有十几G)提示出现"内部一致性错误".但是新建的那个空数据库大小已变为十几G,而且显示数据库为灰色(正在装载),然后就没反应了.
用RESTORE VERIFYONLY FROM disk = ''D:\database_backups\backday1\2007-08-23 04.abc'提示备份集有效。求助怎样才能恢复这个数据库!
下面的示例将 pubs 中的两个文件附加到当前服务器。EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
现在只有2007-08-23 04.abc这个备份文件能用,请助我!
RESTORE DATABASE 试试呢?
FROM DISK = @pnameRESTORE DATABASE 数据库名
FROM DISK =@pname
WITH
MOVE FILELISTONLY得到data
TO '物理路径\XX.mdf',
MOVE FILELISTONLY得到log
TO '物理路径\XX.ldf'
能否说明这个备份文件没有问题?
2. 换台电脑恢复,看看是否电脑的问题restore verify 不会做详细检查,所以它的检查没有问题不代表文件没有问题
那是否说明已经是备份的文件有问题?
(注:备份用的是2000)
如果2005检查出有问题, 就肯定有问题
1:结合邹建兄的《恢复数据库的通用存储过程》来看
备份过程没有杀死用户进程,这就会产生数据库正在使用不能备份而报错的隐患
2:“sql 2005 的检查比2000详细得多, 基本上2005检查没有问题的都可以恢复。
如果2005检查出有问题, 就肯定有问题”是这个问题的关键所在,我无意间用2005检查发现的问题说明在2000下的备份检查并不可靠。我重新备份了数据库并用这个新的备份还原后发现完全没有问题,因此这整个过程的关键看来还应该在于“备份”过程:而我只是图省事只写了一个backup语句。
问题虽然已解决,但是总结一下比较好,也给大家一个参考:备份过程很重要,在备份前做些一致性检查是有好处的,最好写成存储过程,各方面都处理好在备份也不迟!结帖:顶者有分!