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

Leg*_*end 3 sql sql-server sql-server-2008

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

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

jve*_*zey 7

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

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

  1. 确保您拥有良好的数据库备份 - 复制到单独的文件系统/服务器上.
  2. 检查Windows事件日志并查找错误.如果发现任何严重错误,请与Microsoft联系.
  3. 检查SQL Server ERRORLOG并查找错误.如果发现任何严重错误,请与Microsoft联系.
  4. 在服务器上的所有硬盘驱动器上运行chkdsk.
  5. 对数据库运行dbcc checkdb.如果发现任何错误,您可以尝试使用REPAIR_REBUILD选项修复数据库.如果无法修复任何错误,请与Microsoft联系.
  6. 将数据库的备份副本还原到其他服务器上.这将确认它是否是一个问题中的数据库或SQL Server /机.

在步骤#4,#5和#6之后,再次运行查询以查看是否可以使数据库进入恢复模式.不幸的是,腐败可能由​​于无数原因而发生,但比数据更重要.它将确认您的数据或其他地方是否存在问题.只要您具有可以还原到其他SQL Server的备份并且还原的副本不会持续进入恢复模式,您就不必过于担心.

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

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


gbn*_*gbn 6

迟到的答案......

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