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

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

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

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

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

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


person tuseau    schedule 24.02.2011    source источник
comment
Вы пытались проверить опцию закрытия существующих подключений?   -  person Phil Gan    schedule 24.02.2011
comment
Вы не в базе данных, которую пытаетесь удалить, не так ли? Как ни глупо это звучит, при выполнении таких команд вы должны находиться в другой базе данных.   -  person Damien_The_Unbeliever    schedule 24.02.2011
comment
На этот вопрос больше шансов получить хорошие ответы на serverfault.com.   -  person Lasse V. Karlsen    schedule 24.02.2011
comment
Спасибо всем, я просто использую: alter database [MyDatbase] set single_user с немедленным откатом на данный момент.   -  person tuseau    schedule 24.02.2011


Ответы (3)


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

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

person Smur    schedule 24.02.2011
comment
Да, я и так вручную перезапускал службу, но, очевидно, я не могу продолжать это делать. Я попробую закрыть существующие соединения. - person tuseau; 24.02.2011
comment
@tuseau Эта опция доступна, если вы пытаетесь удалить базу данных визуально, а не с помощью командной строки. С уважением, я не знаю, как установить эту опцию программно. Но если вы попытаетесь убрать его визуально, вы заметите флажок. Рад, что смог помочь. - person Smur; 24.02.2011
comment
Действительно, я обнаружил, что даже открытая вкладка запроса в SQL Server Management Studio не позволит базе данных снять ее. - person Ray; 11.07.2016
comment
Невозможно, чтобы создание новой базы данных из резервной копии могло быть использовано. Это фальшивая ошибка, но, тем не менее, она постоянно мешает выполнению задач. - person Suncat2000; 03.12.2019

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

use master

alter database xyz set single_user with rollback immediate

restore database xyz ...

alter database xyz set multi_user
person MahmutHAKTAN    schedule 02.12.2012
comment
Что это за гениальное решение. - person MiDaa; 05.07.2019

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

введите описание изображения здесь

person jbooker    schedule 22.08.2016
comment
Для пользователей с графическим интерфейсом, которые являются более случайными или нечастыми пользователями SSMS или SQL, в целом знание того, как отметить эти параметры во время восстановления, является ключевым параметром. - person MikeJ; 21.11.2017
comment
Закрытие существующих соединений с целевой базой данных не всегда доступно. Я не уверен, почему - по моим наблюдениям, он всегда доступен в моей локальной базе данных с простой моделью восстановления, но никогда не доступен, если я восстанавливаю резервную копию с сервера, для которого была установлена ​​модель полного восстановления. - person Pawel Krakowiak; 08.12.2017
comment
Он не всегда доступен, потому что кто-то в Microsoft принимает неверные решения. Когда я хочу восстановить базу данных, я уже решил, что любой подключенный пользователь должен быть отключен, поэтому блокировка восстановления является нежелательным поведением. - person EvilSnack; 02.06.2021