SQL Server говорит, что база данных используется, но она не
SQL Server продолжает сообщать мне, что база данных используется, когда я пытаюсь ее удалить или восстановить, но когда я запускаю этот запрос метаданных:
select * from sys.sysprocesses
where dbid
in (select database_id from sys.databases where name = 'NameOfDb')
Он ничего не возвращает.
Иногда он возвращает 1 процесс, который является типом ожидания CHECKPOINT_QUEUE. Если я попытаюсь убить этот процесс, он не позволит мне (не может убить не-пользовательский процесс).
Кто-нибудь знает, что неправильно?
Ответы
Ответ 1
Там может быть много вещей, блокирующих вашу базу данных. Например, если у вас есть окно запроса, открытое в этой базе данных, оно будет заблокировано вами. Не считая внешних доступов, как веб-приложение в IIS.
Если вы действительно хотите сбросить его, установите флажок закрыть существующие подключения или попробуйте вручную остановить службу SQL Server.
Ответ 2
Мне нравится это script. Не боритесь с убийством.
use master
alter database xyz set single_user with rollback immediate
restore database xyz ...
alter database xyz set multi_user
Ответ 3
У меня была такая же проблема при попытке восстановить базу данных из резервной копии. Решение для меня состояло в том, чтобы убедиться, что я проверил "Переопределить существующую базу данных (WITH REPLACE)" и "Закрыть существующие подключения к базе данных назначения" на странице "Параметры" ПЕРЕД выполнением восстановления. Вот скриншот ниже.
![введите описание изображения здесь]()