代码改变世界

Database 'xxxx' is being recovered. Waiting until recovery is finished.

2015-10-19 22:21  潇湘隐者  阅读(2341)  评论(0编辑  收藏  举报

巡检发现一个SQL SERVER Express 2005数据库备份时出现下面错误:

Database 'xxxx' is being recovered. Waiting until recovery is finished.

出现这个错误有点让人纳闷,有很多情况可能出现这个错误,例如,系统出现异常重启,或数据库服务被人为突然重启,数据库服务启动后,数据库正在恢复中,此时备份就会出现这种错误提示,但是检查错误日志发现没有任何异常错误信息,检查数据库还原记录,也没有发现该数据库在备份时间段有还原的记录,最终发现是该数据库的一个“自动关闭”属性设置为了True

clipboard

关于数据库的“自动关闭”属性,以前也碰到过一个关于这个属性引起的错误案例 Error: 9001, Severity: 21, State: 5 The log for database 'xxxx' is not available 。看来这个“自动关闭”属性设置为Ture还真是麻烦多多。

 

后面查了一下MSDN文档,发现SQL Server 2000或SQL Server Express版本的数据库的AUTO_CLOSE选项默为Ture,而这个数据库恰好为SQL Server Express 2005.

选项

说明

默认值

AUTO_CLOSE

当设置为 ON 时,数据库将在最后一个用户退出后完全关闭,它占用的资源也将释放。当用户尝试再次使用该数据库时,该数据库将自动重新打开。

当设置为 OFF 时,最后一个用户退出后数据库仍保持打开。

无论使用什么操作系统,当使用 SQL Server 2000 Desktop Engine  SQL Server Express 时,对于所有数据库均为 True,而使用所有其他版本时,对于所有数据库均为False


参考资料:

http://dba.stackexchange.com/questions/9063/database-mydb-is-being-recovered-waiting-until-recovery-is-finished

http://thesqldude.com/2012/10/25/database-takes-long-time-to-recover-during-startuprestore-list-of-known-issues-fixes/