如果数据库始终进入RECOVERY,这意味着什么?

时间:2011-08-05 01:11:22

标签: sql sql-server sql-server-2008

每次运行查询时,我的数据库都不会立即响应第二个查询并抱怨它处于恢复模式(尽管它没有显示数据库名称旁边的任何内容)。这种情况持续了大约5-10分钟,之后一切都恢复正常。

我期待一次重大崩溃,所以我将表复制到另一个数据库,但是有人知道为什么会发生这种情况或者是否存在永久性修复?

4 个答案:

答案 0 :(得分:7)

通常,数据库在启动期间仅处于“恢复”模式 - 当SQL Server启动数据库时。如果您的数据库由于SQL语句而进入恢复模式,那么您几乎肯定会有某种损坏。

这种腐败可能采取多种形式之一,很难诊断。在你做任何事之前,你需要检查一些事情。

  1. 确保您拥有良好的数据库备份 - 复制到单独的文件系统/服务器上。
  2. 检查Windows Event Log并查找错误。如果发现任何严重错误,请与Microsoft联系。
  3. 检查SQL Server ERRORLOG并查找错误。如果发现任何严重错误,请与Microsoft联系。
  4. 在服务器上的所有硬盘上运行chkdsk
  5. 针对您的数据库运行dbcc checkdb。如果发现任何错误,您可以尝试使用REPAIR_REBUILD选项修复数据库。如果无法修复任何错误,请与Microsoft联系。
  6. 将数据库的备份副本还原到其他服务器上。这将确认数据库或SQL Server /计算机中是否存在问题。
  7. 在步骤#4,#5和#6之后,再次运行查询以查看是否可以使数据库进入恢复模式。不幸的是,腐败可能由​​于无数原因而发生,但比数据更重要。它将确认您的数据或其他地方是否存在问题。只要您具有可以还原到其他SQL Server的备份并且还原的副本不会继续进入恢复模式,您就不必过于担心。

    我总是将6号放在最后,因为使用SQL Server设置单独的服务器并移动/恢复大型数据库可能需要很长时间;但如果您已经有备份/测试服务器,这可能是一个很好的第一选择。毕竟,它不会导致您的实时服务器停机。

    最后,不要害怕与微软联系。数据库通常是关键任务,微软有大量工具可以用来诊断问题。

答案 1 :(得分:6)

迟到的答案......

您的数据库是否已将autoclose设置为true?设置后,DBMS必须使数据库联机,这可能会解释您的症状

答案 2 :(得分:2)

当SQL Server服务在写入操作过程中遇到困难时,有时在服务器启动期间的模式下,可能会发生这种情况。按照此链接中的查询进行监控

http://errorbank.blogspot.com/2012/09/mssql-server-database-in-recovery.html

答案 3 :(得分:1)

当服务(或SQL Server服务)在写入操作过程中遇到困难时,我才发生这种情况。一旦它回来,一切都很好。

但是,如果经常发生这种情况,那么我会怀疑某种磁盘级别的故障。在运行诊断/重建问题服务器时,我会确保数据库已完全备份并将其移动到另一台服务器。