我们有一个 sql server 2005 实例,我们的一个员工把它搞乱了,我相信他们终止了 sql server 服务并重新启动了计算机,当它恢复时,我们所有的数据库都处于“恢复中”,每次我们尝试连接到它时都会超时。在过去的 4 天里,每当我们尝试使用 SSMC 时,它都处于“恢复中”状态,无法连接到“msbd”(也在恢复中)。我不确定如何使用 DBCC CHECKDB 命令来检查数据库的完整性。我们有备份(我们无法从中恢复,因为它总是超时),而且它是一个测试服务器,所以生产中没有任何东西真正丢失。有没有办法让它退出恢复模式?我们有另一个运行良好的 sqlserver 实例,但这个实例总是超时。我一直看到的错误是
正在恢复数据库 msdb。请等待恢复完成
和
执行 transact-sql 语句或批处理时发生异常,超时已过期。
有什么想法吗?我们这里确实没有 DBA,也没有具有丰富 SQL 经验的人。
答案1
检查 SQL Server ERRORLOG 文件,看看是否提供了有关恢复过程的任何线索。通常,当“恢复”数据库时,它会定期将当前进度记录到日志文件中,并给出大致的预计剩余时间。
答案2
你可以停止然后删除数据库文件。然后您应该能够从备份中恢复数据库。恢复模式需要 4 天的时间是不正常的,至少根据我的经验是这样。
我不思考您可以运行 DBCC 直到恢复模式完成。
答案3
rmyates 的建议是正确的 – SQL 会将完成百分比以及需要多长时间写入 SQL 日志(和 NT 日志)。
当所有用户数据库都处于恢复状态时,我以前见过这种情况,即保存事务日志(或数据文件)的磁盘驱动器已在 SAN 上交换。检查所有文件的时间戳,以确保它们是合理的。
如果数据库永久处于恢复状态(您已重新启动以尝试这样做?)那么您需要查看 Paul Randal 的博客以获取明确的建议。