Восстановить sql-сервер из файла .bak Исключительный доступ не может быть получен
Я пытаюсь восстановить свой sql с помощью файла bak
Я получаю сообщение об ошибке
Эксклюзивный доступ не может быть получен потому, что база данных используется
Я пробовал
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
Я также попытался восстановить мастер с таким же результатом.
Исключительный доступ не может быть получен потому, что база данных используется.
Ответы
Ответ 1
Метод 1
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...'
Метод 2
alter database database_name
set offline with rollback immediate
alter database database_name
set online
идти
Ответ 2
Не нужно писать какие-либо запросы для решения этой проблемы.
У меня была такая же проблема несколько раз и решить ее с помощью этого метода:
при восстановлении базы данных
- Перейдите на вкладку "Параметры" в окне "Восстановить базу данных"
- Проверить (перезаписать существующую базу данных (WITH REPLACE))
- Проверить (закрыть существующие подключения к базе данных назначения)
- Затем нажмите OK
Восстановление базы данных начинается...
Ответ 3
Любой, у кого были проблемы, перечисленные выше, и ни один из рекомендаций не работает. Просто отключите резервную копию Taillog в разделе "Параметры".
Установка (или выход) этой опции будет пытаться взять хвост-журнал самой исходной базы данных (даже если ваш источник для восстановления - это просто файл). Поэтому, если исходная база данных используется (которая, если вы делаете копию производственной БД, как правило, имеет место), восстановление не выполняется.
Ответ 4
У меня возникла эта проблема, когда я пытался восстановить производственную резервную копию на сервер dev, у которого уже была база данных. Я хотел восстановить в качестве копии, что я сделал, изменив имя целевой базы данных, но проблема была на самом деле с файлами. По умолчанию он пытался перезаписать файлы, которые уже были там. Я исправил проблему, установив флажок "Переместить все файлы в папку" на странице "Файлы" диалогового окна восстановления и выбрав новый каталог, чтобы не было конфликтов файлов.