[英]Backup/Restore from different database causing Restore failed exclusive access could not be obtained
[英]restore sql server from .bak file Exclusive access could not be obtained
我正在嘗試使用 bak 文件恢復我的 sql
我收到錯誤
無法獲得獨占訪問權限,因為數據庫正在使用中
我試過了
USE [master]
ALTER DATABASE myDB
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
並運行查詢
USE [master] RESTORE DATABASE myDB
FROM DISK = 'C:\MyDatabase.bak' WITH FILE = 1, NOUNLOAD, STATS = 10
我也嘗試從恢復向導獲得相同的結果。
無法獲得獨占訪問權限,因為數據庫正在使用中。
方法一
declare @sql as varchar(20), @spid as int
select @spid = min(spid) from master..sysprocesses where dbid = db_id('<database_name>') and spid != @@spid
while (@spid is not null)
begin
print 'Killing process ' + cast(@spid as varchar) + ' ...'
set @sql = 'kill ' + cast(@spid as varchar)
exec (@sql)
select
@spid = min(spid)
from
master..sysprocesses
where
dbid = db_id('<database_name>')
and spid != @@spid
end
print 'Process completed...'
方法二
alter database database_name
set offline with rollback immediate
alter database database_name
set online
去
不需要編寫任何查詢來解決這個問題。 我多次遇到同樣的問題並通過這種方法解決它:當您恢復數據庫時
恢復數據庫正在開始...
任何遇到上面列出的問題的人,沒有任何建議有效..只需關閉“選項”下的 Taillog 備份..
設置(或保留)此選項將嘗試獲取源數據庫本身的尾日志(即使您的還原源只是一個文件)。 因此,如果源數據庫正在使用中(如果您正在制作生產數據庫的副本,通常就是這種情況),那么恢復將失敗。
當我嘗試將生產備份恢復到已經有數據庫的開發服務器時,我遇到了這個問題。 我想恢復為副本,這是通過更改目標數據庫名稱來實現的,但問題實際上出在文件上。 默認情況下,它試圖覆蓋已經存在的文件。 我通過檢查恢復對話框的“文件”頁面中的“將所有文件重定位到文件夾”並選擇一個新目錄來解決這個問題,這樣就不會出現文件沖突。
以上解決方案都沒有對我有用。 經過多次試驗和錯誤,我停止了 SQL Server Browser,然后恢復成功完成
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.