SQL Server 显示恢复中的数据库

And*_*cón 25 sql-server recovery

今天,在断电后,一个数据库(恢复:已满)在 SSMS 中显示“In Recovery”。所以:

myDatabase (In recovery) (数据库状态:recovery, Shutdown)

完成后,“恢复过程”数据库显示名称 myDatabase 没有“(恢复中)”。我以为问题解决了,但事实并非如此。

当我启动使用该数据库的应用程序时,额外的文本“(恢复中)”再次出现在我的数据库名称旁边。

我等到“恢复过程”完成,然后将数据库脱机并重新联机。

我重新启动了服务器,重新启动了计算机,当我的应用程序运行时,额外的文本再次出现。在 SQL Server 日志中,消息“正在启动数据库‘myDatabase’”出现了几次。似乎数据库正在工作,因为我可以插入数据,但状态显示它发生了一些事情。

服务器日志没有显示任何有趣的内容。唯一不正常的是我有30个条目“启动数据库'myDatabase'”。

我知道当服务器启动时,每个数据库在准备使用之前都会经过恢复。但就我而言,数据库联机然后显示“myDatabase(恢复中)”。如果我关闭应用程序,数据库将进入状态:正常。这真让我抓狂。

我什至安装了一个新的 SQL Server 实例,并将旧数据库“myDatabase”放在上面。问题仍然发生。

当我运行此查询时:

SELECT databasepropertyex('nyDatabase', 'STATUS')
Run Code Online (Sandbox Code Playgroud)

它显示正在恢复、在线、可疑和回到在线然后恢复等。

RK *_*ala 16

我不确定这是否有助于解决问题,但您可以试一试。

跑:

RESTORE DATABASE YourDatabase WITH RECOVERY
Run Code Online (Sandbox Code Playgroud)

查看以上是否使数据库退出恢复模式。如果不是,那么问题可能是其他问题。

你可以试试下面的命令,看看数据库是否损坏?

DBCC CHECKDB ('YourDBname') WITH NO_INFOMSGS, ALL_ERRORMSGS
Run Code Online (Sandbox Code Playgroud)

如果它检测到损坏,那么您可能需要使用修复数据库 DBCC CHECKDB


Ben*_*hul 6

每当您使数据库联机时,它都会经历一个恢复过程。不过,我对您对问题的措辞感到有些困惑。除了数据库脱机时(由于原始电源故障或将其脱机然后再次联机),您是否看到数据库在任何其他时间进入恢复状态?如果是这样,数据库将由于其他原因脱机。最好检查 SQL 服务器日志以了解发生了什么。

您还应该检查 Windows 事件日志是否存在磁盘故障之类的问题。数据库不应在正常操作期间启动并进入恢复状态。


小智 2

社区 wiki 答案最初是作者对其问题的编辑:

问题是数据库属性AutoClose已设置。

解决办法是设置AutoClose为 false。