恢復資料庫時遇到無法獨佔錯誤

2021-09-04 13:28:49 字數 1555 閱讀 4937

症狀:

在恢復資料庫時,遇到報錯: system.data.sqlclient.sqlerror: 因為資料庫正在使用,所以無法獲得對資料庫獨佔訪問權。(microsoft.sqlserver.smoextended)

原因分析:

那麼,是誰獨佔了呢?是不是因為我們在testdb單擊右鍵,導致這個資料庫被占用了呢?

嘗試從master資料庫開始單擊右鍵。可是,仍然遇到同樣的錯誤。

執行以下指令碼,檢視哪些windows程序占用了這個資料庫。spid 是 sql server 內部為每乙個連線而分配的程序編號;hostprocess則是 windows 為應用程式分配的程序編號。

按照常規,我們只要切換到ssms,kill它。例如,上圖顯示spid=59占用了testdb資料庫。在ssms執行指令碼刪除這個程序。

kill 59

這個案例太奇怪了!如上所示,我們已經把使用資料庫的程序(spid=59)kill掉了,在windows任務管理器也看不到了(hostprocess=4592)。可是,我們再次在ssms開啟「還原資料庫」視窗,在恢復資料庫時仍然報同樣的錯誤。

解決方案:

用指令碼算了吧。

use [master]

restore database [testdb] from  disk = n'c:\mssql\backup\testdb.bak' with  file = 14,  nounload,  replace,  stats = 5

go原因分析:

無意中選擇了「資料庫」節點,然後單擊「新建查詢」,突然發現預設的資料庫竟然就是testdb !

趕緊去檢查恢復操作時使用的連線。真的是這個原因。

罪魁禍首就是這個「預設資料庫」。

把「預設資料庫」指定為master,退出ssms。重新登入,再做恢復,ok。

恢復資料庫時出現3165錯誤

今天恢復某個資料庫時出現如下的錯誤 msg 208,level 16,state 1,procedure sp msrestoredbreplication,line 72 invalid object name master.dbo.msreplication options msg 3165,l...

恢復資料庫備份

利用檔案組備份恢復破壞的檔案 restore database bbb from disk d aaaabackup 1.bak with norecovery 還原到日誌點 restore log bbb from disk d aaaabackup 2.trn with norecovery r...

命令恢復資料庫

1 建立對應路徑資料夾 d program files microsoft sql server mssql11.mssqlserver mssql data 2 新建資料庫sgs,行資料路徑 日誌路徑都選擇以上路徑,行資料 檔名填寫 blank.mdf 日誌 檔名填寫 blank 1.ldf 3 ...