今天,电源故障后,一个数据库(恢复:已满)在 SSMS 中显示“恢复中”。所以:
myDatabase (In recovery) (数据库状态: recovery, Shutdown)
完成后,“恢复过程”数据库显示名称 myDatabase 没有“(恢复中)”。我以为问题解决了,但事实并非如此。
当我启动使用该数据库的应用程序时,额外的文本“(恢复中)”再次出现在我的数据库名称旁边。
我等到“恢复过程”完成,然后将数据库脱机并重新联机。
我重新启动服务器,重新启动计算机,当我的应用程序运行时,额外的文本再次出现。在 SQL Server 日志中,消息“正在启动数据库 'myDatabase'”出现了几次。似乎数据库正在工作,因为我可以插入数据,但状态显示它发生了一些事情。
服务器日志没有显示任何有趣的内容。唯一不正常的是我有 30 个“启动数据库'myDatabase'”条目。
我知道,当服务器启动时,每个数据库都会在准备好使用之前进行恢复。但在我的情况下,数据库上线然后显示“myDatabase(恢复中)”。如果我关闭应用程序,数据库将进入状态:正常。这真让我抓狂。
我什至安装了一个新的 SQL Server 实例,并将旧数据库“myDatabase”放在上面。问题仍然存在。
当我运行此查询时:
SELECT databasepropertyex('nyDatabase', 'STATUS')
显示正在恢复、在线、可疑和回到在线然后恢复等。
我不确定这是否有助于解决问题,但你可以试一试。
跑:
看看以上是否使数据库退出恢复模式。如果没有,那么问题可能是其他问题。
你可以试试下面的命令,看看数据库是否损坏?
如果它检测到损坏,那么您可能需要使用修复数据库
DBCC CHECKDB
每当您使数据库联机时,它都会经历一个恢复过程。不过,我对您对问题的措辞感到有些困惑。除了数据库脱机(由于您最初的电源故障或您将其脱机然后再次联机)之外,您是否看到数据库进入恢复状态?如果是这样,则数据库由于某些其他原因而脱机。最好检查 SQL 服务器日志以了解发生了什么。
您还应该检查 Windows 事件日志中是否存在磁盘故障等问题。在正常操作期间,数据库不应启动并进入恢复状态。
社区 wiki 答案最初是其作者对问题的编辑:
问题是设置了数据库属性
AutoClose
。解决方案是设置
AutoClose
为 false。