Я пытаюсь выполнить автономное обслуживание (восстановление базы данных dev из оперативной резервной копии) в моей базе данных dev, но команда «Отключить» через SQL Server Management Studio выполняется крайне медленно - порядка 30 минут и более. Я почти сошел с ума, и я не могу найти какие-либо ссылки в Интернете о том, что может быть причиной проблемы со скоростью, или как ее исправить.
Некоторые сайты предполагают, что открытые соединения с базой данных вызывают это замедление, но единственное приложение, которое использует эту базу данных, - это экземпляр IIS моей машины разработки, и служба остановлена - больше нет открытых соединений.
Что может быть причиной этого замедления, и что я могу сделать, чтобы ускорить его?
источник
Скорее всего, откуда-то есть соединение с БД (редкий пример: асинхронное обновление статистики )
Чтобы найти соединения, используйте sys.sysprocesses
Для принудительного отключения используйте ROLLBACK IMMEDIATE
источник
ALTER DATABASE failed because a lock could not be placed on database
командаKILL <SPID>
поможетЕсть ли у вас открытые окна SQL Server Management Studio, которые подключены к этой БД?
Переведите его в однопользовательский режим и повторите попытку.
источник
В моем случае, после ожидания так много, чтобы закончить, у меня не было терпения, и я просто закрыл студию управления. Перед выходом показывало сообщение об успехе, db не в сети. Файлы были доступны для переименования.
источник
выполнить хранимую процедуру sp_who2
Это позволит вам увидеть, есть ли какие-либо блокирующие блокировки. Убить их следует исправить.
источник
В SSMS: щелкните правой кнопкой мыши значок сервера SQL, Activity Monitor. Открытые процессы. Найти обработанный связанный. Щелкните правой кнопкой мыши по процессу, Kill.
источник
каждый раз, когда вы сталкиваетесь с подобными вещами, вы всегда должны думать о своем журнале транзакций. Alter db statment с немедленным откатом указывает, что это так. Проверьте это: http://msdn.microsoft.com/en-us/library/ms189085.aspx
Поддерживайте контрольные точки и т. Д. Вам нужно решить, стоит ли сохранять транзакции в вашем журнале или нет, а затем выбрать режим, в котором вы соответственно запустите свою базу данных. Там действительно нет причин для вас, чтобы ждать, но также нет причин для вас потерять данные - вы можете иметь оба.
источник
Закрытие экземпляра SSMS (SQL Service Manager), из которого был сделан запрос, решил проблему для меня .....
источник
В моем случае я просмотрел несколько таблиц в БД до выполнения этого действия. Моя учетная запись удерживала активное соединение с этой БД в SSMS. После того как я отключился от сервера в SSMS (оставив открытым диалоговое окно «Перевести базу данных в автономный режим»), операция прошла успешно.
источник
Чтобы обойти это, я остановил веб-сайт, который был подключен к БД в IIS, и сразу же «замороженная» панель «взять БД в автономном режиме» стала незамерзающей.
источник
Я перепробовал все предложения ниже и ничего не получалось.
Убить <SPID>
ALTER DATABASE SET SINGLE_USER с немедленным откатом
БАЗА ДАННЫХ ALTER УСТАНОВЛЕНА С НЕМЕДЛЕННЫМ РОЛБЭК
Результат: обе вышеперечисленные команды также застряли.
4 Щелкните правой кнопкой мыши базу данных -> Свойства -> Параметры. Установите для базы данных значение «Только чтение». Нажмите «Да» в диалоговом окне с предупреждением, что SQL Server закроет все подключения к базе данных.
Результат: окно зависло при выполнении.
В качестве последнего средства я перезапустил службу сервера SQL из диспетчера конфигурации, а затем запустил команду ALTER DATABASE SET OFFLINE WITH ROLLBACK IMMEDIATE. Оно работало завораживающе
источник
Кроме того, закройте все окна запросов, которые у вас могут быть открыты, которые связаны с рассматриваемой базой данных;)
источник
В SSMS установите базу данных только для чтения, а затем обратно. Соединения будут закрыты, что освобождает замки.
В моем случае был веб-сайт, который имел открытые связи с базой данных. Этот метод был достаточно прост:
Database Read-Only
в Trueисточник
Для меня мне просто нужно было войти в Монитор активности заданий и остановить две вещи, которые обрабатывались. Затем он сразу же отключился. Хотя в моем случае я знал, что это были за эти 2 процесса, и что было нормально их остановить.
источник
В моем случае база данных была связана со старой установкой Sharepoint. Остановка и отключение связанных служб в диспетчере сервера «отменили» действие «отключить», которое выполнялось в течение 40 минут, и оно немедленно завершилось.
Вы можете проверить, используют ли какие-либо сервисы в настоящее время базу данных.
источник
sp_who2
чтобы увидеть, какие процессы используют базу данных и использовать,kill <PID>
чтобы остановить их.В следующий раз в диалоговом окне «Выключить» не забудьте установить флажок «Удалить все активные подключения». Я также был на SQL_EXPRESS на локальной машине без соединений, но это замедление произошло для меня, если я не установил этот флажок.
источник
В моем случае я остановил сервер Tomcat. затем БД немедленно отключилась.
источник