在處理資料庫還原的時候,常常會出現 (the database is in use) 錯誤訊息。
顧名思義,就是因為還有人或者是應用程式還正在連結使用這個資料庫, 所以 SQL Server 拒絕讓任何人還原這個資料庫。解決辦法很簡單,就是用 sp_who2 找出連線的 SPID ( Server Process ID), 然後用 kill 指令殺掉這個 SPID. 就可以繼續進行資料庫還原的動作了。
如果只有一兩個 SPIDs 要 kill, 可以慢慢用 kill 指令來處理,但若有幾十個或幾百個 SPIDs 要 kill, 就必須要用比較科學的方法解決。可以使用這個 T-SQL 一次搞定 kill 所有的 SPIDs.
但是,如果遇到一些侵略性很高很黏的連結設定就有點麻煩。當這個連結的 SPID 被 killed 後,馬上又迅速的自動產生新的連結。根本就沒辦法完全殺乾淨。這個時候,可以拿出殺手鐧,就是找出這個侵略性很高的 login,然後停用 (disable) 這個 login. 讓它沒有辦法在連上資料庫。等到資料庫還原完成後,再啟用 (enable) 這個 login.