Вопрос относительно получения монопольного доступа к базе данных SqlServer для восстановления - PullRequest
1 голос
/ 04 февраля 2010

Вот моя проблема: у меня есть приложение, которое использует sql server express 2005, и оно установлено по умолчанию под экземпляром sql server express, SQLExpress Под этим экземпляром есть несколько других баз данных, используемых другими приложениями (веб-интерфейс или настольный компьютер). ЕслиМне нужно восстановить базу данных, иногда она работает, но иногда не получается, сообщая, что для этого мне нужен эксклюзивный доступ к базе данных.Я понимаю это, и, конечно, когда я пытаюсь восстановить, приложение, использующее базу данных, закрывается, но, вероятно, оно было закрыто всего за несколько минут до того, так что сервер sql по-прежнему сохраняет некоторые соединения открытыми для целей кэширования.И в этом случае у меня есть два варианта:

  • перезапустить экземпляр сервера sql - это проще всего сделать с точки зрения пользователя (щелкните правой кнопкой мыши на соединении с сервером в Enterprise Manager и выберите перезапустить (нохудшее, так как это останавливает все базы данных)

  • Отсоедините мою базу данных, присоедините снова, затем восстановите (это работает, потому что у отсоединения есть возможность закрыть все соединения). Но это сложнее сделать (занимает больше времени) так как мне приходится просматривать папки, чтобы найти, где находится база данных для присоединения обратно (я храню все базы данных в произвольном расположении, а не в расположении базы данных сервера sql по умолчанию)

Мой вопросесть ли еще какой-нибудь более простой способ сделать это?

Спасибо

1 Ответ

2 голосов
/ 04 февраля 2010

В SQL Server Management Studio (не уверен насчет Express, я проверю) вы можете использовать Activity Monitor в разделе «Управление», чтобы найти все соединения, все еще открытые для базы данных.Щелкните правой кнопкой мыши по соединению и выберите «Kill»

. Таким образом, вы можете очистить все неподтвержденные соединения.

[EDIT] Я проверил SQL Server Express и также содержит монитор активности,В качестве альтернативы вы можете использовать скрипт, чтобы закрыть все соединения.См. здесь для примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...