SQL Server говорит мне, что база данных используется, но это не так - PullRequest
20 голосов
/ 24 февраля 2011

SQL Server постоянно сообщает мне, что база данных используется, когда я пытаюсь ее удалить или восстановить, но когда я запускаю этот запрос метаданных:

select * from sys.sysprocesses 
where dbid 
  in (select database_id from sys.databases where name = 'NameOfDb')

ничего не возвращает.

Иногда он возвращает 1 процесс, который является типом ожидания CHECKPOINT_QUEUE. Если я попытаюсь убить этот процесс, он не даст мне (не может убить не пользовательский процесс).

Кто-нибудь знает, что не так?

Ответы [ 3 ]

31 голосов
/ 02 декабря 2012

мне нравится этот скрипт. Не борись с убийством ..

use master

alter database xyz set single_user with rollback immediate

restore database xyz ...

alter database xyz set multi_user
13 голосов
/ 24 февраля 2011

Там может быть много вещей, блокирующих вашу базу данных. Например, если в этой базе данных открыто окно запроса, оно будет заблокировано вами. Не считая внешних обращений, как веб-приложение на IIS.

Если вы действительно хотите сбросить его, установите флажок закрыть существующие подключения или попробуйте вручную остановить службу SQL Server.

10 голосов
/ 22 августа 2016

У меня возникла такая же проблема при попытке восстановить базу данных из резервной копии. Решение для меня состояло в том, чтобы убедиться, что я установил флажок «Перезаписать существующую базу данных (WITH REPLACE)» и «Закрыть существующие подключения к целевой базе данных» на странице «Параметры» ДО выполнения восстановления. Вот скриншот ниже.

enter image description here

...