還原資料庫時,遇到"無法獲得獨佔存取權,因為資料庫正在使用中"的問題排除

還原資料庫時,遇到"無法獲得獨佔存取權,因為資料庫正在使用中"的問題排除

本文將介紹當您嘗試還原資料庫時,遇到【無法獲得獨佔存取權,因為資料庫正在使用中。】的錯誤訊息該如何排除。

問題發生的原因是資料庫還原時必須獨佔整個資料庫的存取權,換言之,還原資料庫的同時不能有其他使用連接至要還原的資料庫,否則將會還原失敗,要讓資料庫還原作業順利進行,必須中斷其他連線,作法有兩種,說明如下:

  • 使用sp_who查詢目前存取要還原資料庫的連線有哪些,再搭配kill來結束處理程序。

下圖為使用sp_who敘述的查詢結果,假設要還原的資料庫為Northwind,由查詢結果得知共有4條連線正在存取Northwind(53-56)。

image

接著使用下列TSQL敘述終止連線:

   1:  kill 53
   2:  kill 54
   3:  kill 55
   4:  kill 56
  • 設定資料庫為單一使用者模式,並Rollback所有未commit的交易。
   1:  USE [master]
   2:  GO
   3:  ALTER DATABASE [Northwind] SET  SINGLE_USER WITH ROLLBACK IMMEDIATE
   4:  GO
執行上述TSQL敘述後,可以從物件總管看到Northwind已經變成單一使用者模式。
image

不論使用上述哪種方法來中斷要還原的資料庫的連線後就可以順利完成資料庫還原。

 

【參考資料】