即时通讯尝试连接到一个SQL Server数据库我得到这个错误
Database 'XXX' is in transition. Try the statement later.
我今天早些时候取消了一个长查询,但由于某种原因,我不能让数据库恢复。 有什么我可以做的吗?
如果您尝试将数据库脱机或执行某些其他操作并且失败,则可能会发生这种情况。 有时如果您closures尝试操作的SSMS实例,则可以清除locking,然后重新打开该locking。 closures并重新打开连接到服务器的任何SSMS实例。
如果尝试在长查询运行时使数据库脱机,也会出现这种情况。 检查活动监视器并尝试查杀任何长时间运行的查询(如果适用且安全的话)。
如果上述两项均不起作用,请closures所有SSMS实例,然后通过SQL Serverconfigurationpipe理器重新启动SQL。 通常这样可以治愈它,尽pipeDB一开始可能处于恢复模式。
奇怪的是,我通过简单地closuresSSMS并重新打开来解决了这个问题。
虽然closuresSSMS也为我工作,根据问题,你可以试试这个:
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
在SQL Server Management Studio中有一个选项可用于在线/离线数据库。 但是需要行政许可。
要访问它,右键单击数据库 – >任务 – >联机。
我知道这已经回答了,但只是补充; 如果情况如此,以至于您试图使其脱机,然后失败,则可以尝试杀死尝试更改数据库状态的SPID。
执行sp_who或sp_who2并查找试图使数据库脱机的数据库上正在旋转的SPID。 杀死那个SPID,你离开的时候在线或离线的数据库不在过渡状态。