Дополнительно
Как уничтожить все текущие подключения к базе данных SQL Server 2005?
Я хочу переименовать базу данных, но продолжаю получать ошибку 'could't get exclusive lock' on the database, что подразумевает, что какое-то соединение(я) все еще активно.
Как я могу уничтожить все соединения с базой данных, чтобы я мог переименовать ее?
284
19
См. раздел Kill All Active Connections To A Database.
Причина, по которой подход, предложенный Adam suggested, не работает, заключается в том, что за то время, пока вы перебираете активные соединения, могут быть установлены новые, и вы их пропустите. В статье, на которую я дал ссылку, используется следующий подход, который не имеет этого недостатка:
Чтобы выполнить этот сценарий, замените 'DB_NAME' на базу данных, к которой нужно уничтожить все соединения:
Убить его, и убить его с огня:
С помощью среды SQL студии экспресс:
В дереве обозревателя объектов детализацию при управления, чтобы "Монитор активности и quot; (Если вы не можете найти его там, затем правый клик на сервере базы данных и выберите "и монитор активности с"). Открыть Монитор активности, вы можете посмотреть весь процесс информация. Вы должны быть в состоянии найти замки для базы данных, которую вы'повторно заинтересованы в и убивать тех замков, которые тоже убивают соединения.
Вы должны быть в состоянии переименовать после этого.
Я'ве всегда используется:
в <предварительно&ГТ;&ЛТ;код&ГТ; ИЗМЕНИТЬ ПАРАМЕТРЫ DB_NAME БАЗЫ ДАННЫХ SET SINGLE_USER УКАЗАН С ОТКАТА НЕПОСРЕДСТВЕННОЙ Перейти SP_RENAMEDB 'ИМЯ_БАЗЫ_ДАННЫХ','DB_NAME_NEW' Перейти Изменить DB_NAME_NEW базы данных set MULTI_USER-установить обратно в многопользовательский Перейти &ЛТ;/код&ГТ;&ЛТ;/пре&ГТ;
Автономный режим занимает некоторое время, и иногда я испытываю некоторые проблемы с этим..
Самый надежный способ на мой взгляд:
Открепить Щелкните ДБ -&ГТ; задачи -&ГТ; отсоединить... проверьте и quot;удалить соединения и quot; ОК
Подсоедините Щелкните баз данных -и GT; прикрепить.. Добавить... - и GT; выберите вашу базу данных и изменить присоединить колонки на желаемое название базы данных. ОК
используйте 'мастер' базы данных и запустить этот запрос, он будет убивать все активные соединения с базой данных.
Обычно я бегу в эту ошибку, когда я пытаюсь восстановить базу данных я обычно просто пойти в верхней части дерева в Управления Studio и щелкните правой кнопкой мыши и перезапустите сервер баз данных (потому что это's на развитие машины, это не может быть идеальным в производстве). Это закрыть все подключения к базе данных.
В MS SQL Server Management Studio в проводнике объектов щелкните правой кнопкой мыши на базе данных. В следующем контекстном меню выберите 'Tasks -> Take Offline'
Здесь's, как надежную такого рода вещи в MS SQL сервер менеджмент Студио 2008 (может работать и для других версий):
Еще один "убить его с огня и quot; подход-просто перезапустите службу mssqlserver. Мне нравится делать вещи из командной строки. Наклеивать именно в ЦМД будет делать это: Чистая остановка &амп служба mssqlserver, чистая запустится mssqlserver
Или открыть "и услуг.МСЦ" и обнаружить "SQL-сервер&я (имя mssqlserver), и правой кнопкой, выберите и quot;перезагрузить" по.
Это и quot;Конечно, конечно, что" убить все подключения ко всем базам данных в экземпляре.
(Мне нравится этот лучше, чем многие подходы, изменить и изменить конфигурацию сервера/базы данных)
Вариант работы для меня в этом случае выглядит следующим образом:
Щелкните правой кнопкой мыши на имени базы данных, нажмите на собственность, чтобы получить окно свойств, перейдите на вкладку Параметры и измените на "ограничить доступ" в собственность от нескольких пользователей для одного пользователя. Когда вы нажмете на кнопку OK, вам будет предложено закрыть все открытые подключения, выберите "Да" и вы намерены переименовать базу данных....
Попробуйте это:
Это не't работа для меня (SQL2008 предприятия), я не мог'т вижу никаких запущенных процессов или пользователей, подключенных к БД. Перезапуск сервера (Правой Кнопкой Мыши на SQL сервер менеджмент студию и выбрать перезагрузка) позволило мне восстановить БД.
Я'м с помощью SQL сервер 2008 R2, мой БД уже был установлен для одного пользователя и есть связь, что ограничения каких либо действий в базе данных. Таким образом, рекомендуется SQLMenace'с решение, ответил с ошибкой. Здесь является одним которые работали в моем случае.
Я использовать sp_who, чтобы получить список всех процессов в базе данных. Это лучше, потому что вы можете хотеть рассмотреть, какой процесс убивать.
Результат Вы можете использовать команду аннулирования команда в колонну, чтобы убить процесс, который вы хотите.
Вы можете использовать команду sp_who и "убить" все процессы, которые используют базы данных, а затем переименовать свой базе.