Восстановить sql-сервер из файла .bak Исключительный доступ не может быть получен - программирование
Подтвердить что ты не робот

Восстановить 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

Я также попытался восстановить мастер с таким же результатом.

Исключительный доступ не может быть получен потому, что база данных используется.

4b9b3361

Ответ 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, у которого уже была база данных. Я хотел восстановить в качестве копии, что я сделал, изменив имя целевой базы данных, но проблема была на самом деле с файлами. По умолчанию он пытался перезаписать файлы, которые уже были там. Я исправил проблему, установив флажок "Переместить все файлы в папку" на странице "Файлы" диалогового окна восстановления и выбрав новый каталог, чтобы не было конфликтов файлов.