SQL Server 2005数据库“正在恢复”

11

昨天我在我的开发机上恢复了一个35GB的数据库,一切都进行得很顺利,直到今天早上我的客户端应用程序无法连接。因此,我打开了SQL Management Studio,发现数据库处于“正在恢复”状态。

除了通常与未提交的事务有关之外,我并不知道太多关于这个问题。现在,由于我知道没有任何未提交的事务,所以必定是其他原因。首先,我想知道在什么条件下会出现这种情况。其次,在此期间我无法工作,因此如果有任何停止恢复、加速恢复或至少找到大概需要多长时间的方法,那将非常有帮助。


根据我的经验,在大型数据库(约100 GB)的服务器崩溃时(由于操作系统错误或电源中断),我看到了同样的情况。您在事件查看器中是否发现了一些错误或警告?唯一停止恢复的方法是关闭SQL服务器,但当服务器重新启动时...恢复又会开始! - lg.
2个回答

14

恢复过程中不要关闭 SQL。让它完成。检查错误日志。如果无法完成,请从备份中还原。


1
也可以看看这个:http://www.sqlskills.com/BLOGS/PAUL/category/Bad-Advice.aspx - user114600
虽然这不是一个确切的答案,但似乎是最好的了。奇怪的是,我确实这样做了,并且紧接着运行了 dbcc checkdb,但完全没有发现任何问题。之后也没有再出现过这种情况。谁知道当时到底出了什么问题! - EightyOne Unite
2
那时候可能是任何事情。当MSSQL服务没有正确终止并且数据库没有被检查点时,通常会发生恢复,因此所有日志都会被重放。如果在服务器死亡的阶段有一个特别长时间运行的事务,它将不得不重新处理它。 - user114600
4
请确保自己刷新数据库,因为微软可能让你盯着屏幕看永远,即使处理已经完成数小时了。 - ofirbt
当然,这是通过“检查错误日志”来暗示的,您也可以在管理工作室中找到它。 - user114600

11
您可以在事件查看器中查找来了解需要多长时间。在Windows日志的应用程序部分,您可以获取来自MSSQLSERVER的信息消息,并具有EventID 3450,告诉您它正在进行什么操作。类似于:

数据库'XYZ'的恢复已完成10%(大约剩余123456秒)等等

很抱歉,我还不知道如何停止它。


1
虽然不是完整的答案,但仍然非常有用。谢谢 :-) - EightyOne Unite
3
同时,可以运行此脚本以查看恢复状态:http://timlaqua.com/2009/09/determining-how-long-a-database-will-be-in-recovery-sql-server-2008/。 - nanonerd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接