iT邦幫忙

2

還原 SQL Server 資料庫常見的問題 - 心得分享

  • 分享至 

  • xImage
  •  

DBABootcamp

在處理資料庫還原的時候,常常會出現 (the database is in use) 錯誤訊息。

https://ithelp.ithome.com.tw/upload/images/20210310/201350388bOqI9WQJ2.jpg

顧名思義,就是因為還有人或者是應用程式還正在連結使用這個資料庫, 所以 SQL Server 拒絕讓任何人還原這個資料庫。解決辦法很簡單,就是用 sp_who2 找出連線的 SPID ( Server Process ID), 然後用 kill 指令殺掉這個 SPID. 就可以繼續進行資料庫還原的動作了。

https://ithelp.ithome.com.tw/upload/images/20210310/201350387tP6Af7k6C.jpg

https://ithelp.ithome.com.tw/upload/images/20210310/201350383qHSBveTIN.jpg

如果只有一兩個 SPIDs 要 kill, 可以慢慢用 kill 指令來處理,但若有幾十個或幾百個 SPIDs 要 kill, 就必須要用比較科學的方法解決。可以使用這個 T-SQL 一次搞定 kill 所有的 SPIDs.

https://ithelp.ithome.com.tw/upload/images/20210310/20135038VD4LPDnUS7.jpg

但是,如果遇到一些侵略性很高很黏的連結設定就有點麻煩。當這個連結的 SPID 被 killed 後,馬上又迅速的自動產生新的連結。根本就沒辦法完全殺乾淨。這個時候,可以拿出殺手鐧,就是找出這個侵略性很高的 login,然後停用 (disable) 這個 login. 讓它沒有辦法在連上資料庫。等到資料庫還原完成後,再啟用 (enable) 這個 login.

https://ithelp.ithome.com.tw/upload/images/20210310/20135038MNiXpcttih.jpg


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言