症狀:
在恢復資料庫時,遇到報錯: 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 ...