新鲜的SQL Server DB恢复工作大部分时间,但有时失败

我正在使用IIS和SQL Express自动设置Windows Server 2008 R2核心

我从一个VM(在这个testing案例中的virtualbox)中的一个新的(刚刚安装的)操作系统开始,

然后我的脚本创build用户,安装dot.NET 3.51和4,IIS和SQL-Server 2008 R2 Express。 他们还build立了网站和服务,一切都很好。

在某些时候,我需要恢复六个SQL Server数据库,只有一个完整备份的.bak文件。

我正在使用这样的东西:

RESTORE DATABASE FooBar FROM DISK = N'E:\temp\db\FooBar.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10 

现在调整我的脚本,我已经完成了整个设置过程至less40次,大部分时间恢复工作正常,但有时一个还原操作失败,即使SQL服务器设置和备份文件始终一样。

有一个数据库具有全文目录,而且其中一个数据库比其他数据库更经常失败。

当我在Management Studio中远程连接到服务器并运行相同的SQL时,它通常仍然失败,但是当我在SSMS中手动执行还原时,它通常工作。

令我感到困惑的是,尽pipesql环境总是相同的,但是恢复有时是有效的,有时却不行。

这是实际的错误信息:

 100 percent processed. Processed 11128 pages for database 'FooBar', file 'FooBar' on file 1. Processed 3 pages for database 'FooBar', file 'FooBar_log' on file 1. Msg 9004, Level 21, State 1, Server LAB45, Line 1 An error occurred while processing the log for database 'FooBar'. If possible, restore from backup. If a backup is not available, it might be necessary to rebuild the log. Msg 3013, Level 16, State 1, Server LAB45, Line 1 RESTORE DATABASE is terminating abnormally. 

任何想法可能是什么问题?

这样的错误唯一的原因是备份中的数据损坏,或者如果事务日志文件在写入磁盘时被损坏。

仅供参考:Windows 2008 R2核心不支持SQL Server 2008 R2。 SQL Server 2012是Windows 2008 R2内核支持的第一个版本。

我还没有弄清楚为什么发生这种情况,但我现在有一个解决方法。 我只是运行我的恢复脚本两次。 第二次它总是工作!

我在恢复语句中添加了一些T-SQL代码,只有在失败之前还是根本没有恢复时才能恢复。 这样,只有恢复失败的数据库才会被恢复。

奇怪的…