Я хочу переименовать базу данных, но продолжаю получать ошибку, которая «не может получить эксклюзивную блокировку» для базы данных, которая подразумевает, что некоторые соединения все еще активны.
Как я могу убить все соединения с базой данных, чтобы я мог переименовать ее?
Сценарий, чтобы выполнить это, замените 'DB_NAME' на базу данных, чтобы уничтожить все соединения с:
источник
and spid <> @@SPID
кSELECT @sKillConnection
заявлению, чтобы не пытаться разорвать мое текущее соединение, что приведет к сообщению об ошибке.Убей его и убей огнем
источник
Использование SQL Management Studio Express:
В дереве обозревателя объектов перейдите в раздел «Управление» до «Монитор активности» (если его там нет, щелкните правой кнопкой мыши сервер базы данных и выберите «Монитор активности»). Открыв Activity Monitor, вы можете просмотреть всю информацию о процессе. Вы должны быть в состоянии найти блокировки для базы данных, которая вас интересует, и убить эти блокировки, что также уничтожит соединение.
Вы должны быть в состоянии переименовать после этого.
источник
Я всегда использовал:
источник
источник
Работа в автономном режиме занимает некоторое время, и иногда у меня возникают некоторые проблемы с этим ..
Самый солидный способ на мой взгляд:
Отсоединение правой кнопкой мыши БД -> Задачи -> Отключение ... отметьте «Отключить соединения» Ok
Повторно подключите правой кнопкой мыши Базы данных -> Вложить .. Добавить ... -> выберите свою базу данных и измените столбец Вложить как на нужное имя базы данных. Хорошо
источник
используйте базу данных 'master' и выполните этот запрос, он уничтожит все активные соединения из вашей базы данных.
источник
Обычно я сталкиваюсь с этой ошибкой, когда пытаюсь восстановить базу данных. Обычно я просто захожу в верхнюю часть дерева в Management Studio, щелкаю правой кнопкой мыши и перезагружаю сервер базы данных (поскольку он находится на компьютере разработчика, это может быть не идеально в производственной среде). ). Это закрыть все соединения с базой данных.
источник
ALTER DATABASE ... SET SINGLE_USER
команды в других ответах возвращали ту же ошибку «не удалось получить эксклюзивную блокировку»).В MS SQL Server Management Studio в обозревателе объектов щелкните правой кнопкой мыши базу данных. В появившемся контекстном меню выберите «Задачи -> Отключить».
источник
Другой подход «убей его огнем» - просто перезапустите службу MSSQLSERVER. Мне нравится делать вещи из командной строки. Вставка именно в CMD сделает это: NET STOP MSSQLSERVER и NET START MSSQLSERVER
Или откройте «services.msc» и найдите «SQL Server (MSSQLSERVER)» и щелкните правой кнопкой мыши, выберите «restart».
Это «наверняка, наверняка» уничтожит ВСЕ соединения со ВСЕМИ базами данных, работающими в этом экземпляре.
(Мне нравится это лучше, чем многие подходы, которые меняют и меняют конфигурацию на сервере / базе данных)
источник
Вот как надежно работать с такими вещами в MS SQL Server Management Studio 2008 (может работать и для других версий):
источник
Вариант работы для меня в этом сценарии выглядит следующим образом:
источник
Попробуй это:
источник
Щелкните правой кнопкой мыши на имени базы данных, щелкните «Свойство», чтобы открыть окно свойств, откройте вкладку «Параметры» и измените свойство «Ограничить доступ» с Многопользовательского на Однопользовательский. Когда вы нажмете кнопку ОК, он предложит вам закрыть все открытые соединения, выберите «Да», и вы настроены на переименование базы данных ....
источник
Они не работали для меня (SQL2008 Enterprise), я также не мог видеть никаких запущенных процессов или пользователей, подключенных к БД. Перезапуск сервера (щелкните правой кнопкой мыши Sql Server в Management Studio и выберите «Перезапустить») позволил мне восстановить БД.
источник
Я использую SQL Server 2008 R2, моя БД уже была настроена для одного пользователя, и было установлено соединение, которое ограничивало любые действия с базой данных. Таким образом, рекомендуемое решение SQLMenace отреагировало с ошибкой. Вот тот, который работал в моем случае .
источник
Я использую sp_who, чтобы получить список всех процессов в базе данных. Это лучше, потому что вы можете посмотреть, какой процесс убить.
Результат
Вы можете использовать команду в столбце KillCommand, чтобы завершить процесс, который вы хотите.
источник
Вы можете использовать команду SP_Who и убить все процессы, которые используют вашу базу данных, а затем переименовать вашу базу данных.
источник