数据库“XXX”正在转换中。稍后尝试该语句

数据库“XXX”正在转换中。稍后尝试该语句

我尝试连接到 SQL Server 数据库时收到此错误

Database 'XXX' is in transition. Try the statement later.

我今天早些时候取消了一个长查询,但由于某种原因,我无法让数据库恢复。我能做什么?

答案1

如果您尝试使数据库脱机或执行某些其他操作但失败,有时会发生这种情况。有时,如果您关闭尝试执行该操作的 SSMS 实例,然后重新打开它,则可以清除锁定。关闭并重新打开连接到服务器的所有 SSMS 实例。

如果您在长时间查询运行时尝试使数据库脱机,也会出现这种情况。检查活动监视器并尝试终止任何长时间运行的查询(如果适用且安全)。

如果以上方法均无效,请关闭所有 SSMS 实例,然后通过 SQL Server 配置管理器重新启动 SQL。通常这样可以解决问题,尽管数据库最初可能处于恢复模式。

答案2

奇怪的是,我只需关闭 SSMS 并重新打开就解决了这个问题。

答案3

虽然关闭 SSMS 对我来说也有效,但根据问题的不同,您可以尝试以下操作:

ALTER DATABASE [Name] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

ALTER DATABASE [Name] SET MULTI_USER

这个想法来自这个问题(和个人经历): https://stackoverflow.com/questions/4230290/sql-server-2008-how-do-i-disconnect-everyone-from-my-db

答案4

我知道这已经得到解答了,但只是想补充一下;如果您尝试将其脱机,然后失败了,您可以尝试终止试图更改数据库状态的 SPID。

执行 sp_who 或 sp_who2 并找到正在 DB 上旋转并试图使数据库脱机的 SPID。终止该 SPID,您将得到不处于过渡状态的联机或脱机 DB。

相关内容