每次运行查询时,我的数据库都不会立即响应第二个查询并抱怨它处于恢复模式(尽管它没有显示数据库名称旁边的任何内容)。这种情况持续了大约5-10分钟,之后一切都恢复正常。
我期待一次重大崩溃,所以我将表复制到另一个数据库,但是有人知道为什么会发生这种情况或者是否存在永久性修复?
答案 0 :(得分:7)
通常,数据库在启动期间仅处于“恢复”模式 - 当SQL Server启动数据库时。如果您的数据库由于SQL语句而进入恢复模式,那么您几乎肯定会有某种损坏。
这种腐败可能采取多种形式之一,很难诊断。在你做任何事之前,你需要检查一些事情。
在步骤#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服务)在写入操作过程中遇到困难时,我才发生这种情况。一旦它回来,一切都很好。
但是,如果经常发生这种情况,那么我会怀疑某种磁盘级别的故障。在运行诊断/重建问题服务器时,我会确保数据库已完全备份并将其移动到另一台服务器。