我目前正在分離生產服務器上的開發數據庫。由於這是一個生產服務器,我不想重新啓動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