我目前正在分离生产服务器上的开发数据库。由于这是一个生产服务器,我不想重新启动sql服务。这是最糟糕的情况。分离数据库/离线失败
显然我试图通过SSMS分离它。告诉我有一个活跃的连接,我断开了它。第二次分离时,它告诉我,这是不可能的,因为它被使用。
我试过EXEC sp_detach_db
'DB'没有运气。
我试图让数据库脱机。当我感到无聊并关闭它时,它跑了大约15分钟。
无论如何,我尝试了一切...我确保所有连接都使用SSMS的分离数据库中的连接指示符被杀死。
下返回0结果:
USE主 SELECT * FROM sys.sysprocesses WHERE DBID = DB_ID( 'DB')
并且正在运行现在18分钟以下:
ALTER DATABASE数据库脱机立即回滚
我在所有这些过程中都定期重新启动SMSS,以确保SSMS不是通过隐藏锁定东西的罪魁祸首。
难道没有办法蛮横吗?数据库模式是我非常喜欢的,但数据是可消耗的。
希望有某种快速修复? :)
DBA将尝试重置该过程今晚,但我想知道这个解决方案,以防万一。
Thx!
ps:我正在使用DTC ...所以这也许可以解释为什么我的数据库突然被锁定了?
编辑:
我现在做的,这导致最后一部分的无限执行以下。第一个查询甚至返回0,所以我想杀死用户将不会有问题。
USE [主] GO
SELECT * FROM sys.sysprocesses WHERE DBID = DB_ID( '数据库')
GO
DECLARE @return_value诠释
EXEC @return_value = [DBO]。[usp_KillUsers] @p_DBName = '数据库'
SELECT '返回值'= @return_value
GO
WITH IMMEDIATE ROLLBACKALTER DATABASE数据库SET OFFLINE
GO
对于这样的任务,我喜欢在开始时放置一个明确的“使用主”,以确保我没有使用我试图分离的数据库。 – 2009-08-18 16:01:16
我100%确定我没有使用数据库。我检查了每个可以检查的地方,以确保该数据库上没有连接处于活动状态。 – SpoBo 2009-08-25 07:56:01