Радио Microsoft
Если хотите знать все про Microsoft, настраивайтесь на нашу частоту!

Переключение базы данных в автономный режим (OFFLINE)

При переводе базы данных в автономный режим (OFFLINE) SQL Server ее полностью отключает, освобождает файлы, и дальнейшие подключения к базе данных будут невозможны.

Эта функциональность может быть полезна, например, для того чтоб скопировать файлы данных (при работе SQL Server их блокирует и скопировать их стандартными средствами невозможно), или когда требуется отключить базу данных от внешнего мира по другим причинам.

Для того, чтоб перевести базу данных в автономный режим с помощью SQL Server Management Studio, нужно в контекстном меню базы данных выбрать пункт Tasks - Take Offline.

Tasks - Take Offline

После выбора этого пункта база данных будет переведена в автономный режим:

База данных переведена в автономный режим

Предупреждение - мастер не просит подтверждения операции! База данных переводится в автономный режим сразу же после нажатия пункта Take Offline.

Теперь в списке база данных, переведенная в автономный режим, поменчается специальным знаком и надписью Offline

База данных, переведенная в автономный режим

Дальнейшие операции с базой данных невозможны.

При попытке подключиться к ней, будет получено исключение SqlException:

Cannot open database "test" requested by the login. The login failed. Login failed for user 'WIN-WN7Y6PAT6BX\Administrator'.

Для того, чтоб вернуть базу данных обратно в нормальный режим работы (ONLINE), нужно в контекстном меню выбрать пункт Bring Online

Tasks - Bring Online

После выбора этого пункта меню, база данных будет возвращена в режим ONLINE.

База данных переведена в режим ONLINE

Подтверждение операции Bring Online также не требуется

После этого с базой данных можно нормально работать.

 

Выполнить эти операции можно и с помощью скрипта.

Для перевода в режим OFFLINE:

ALTER DATABASE [test] SET OFFLINE

Для перевода обратно в режим ONLINE:

ALTER DATABASE [test] SET  ONLINE

Если вы выполняете эти команды в SQL Server Management Studio, то в древе Object Explorer в списке баз данных информация о том, что база данных перешла в автономный режим, сразу не появится - нужно принудительно дать команду обновить список баз данных чтоб это изменнеие отобразилось (достаточно выделить в древе Object Explorer пункт Databases и нажать F5, или кнопку Refresh на панели инструментов).

 

Проблема с переводом в автономный режим может возникнуть, если к базе данных есть подключения со стороны сторонних приложений. Причем совсем не обязательно чтоб в этом подключении выполнялся какой-то запрос - может быть так что в стороннем приложении подключение не используется, но осталось висеть в пуле подключений. Этот сценарий очень вероятен если с подключением работает веб-приложение.

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

Невозможно перевести базу данных в автономный режим, если к ней есть подключения

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

Например, это можно сделать следующим скриптом:

ALTER DATABASE [test] SET  SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [test] SET  MULTI_USER 
ALTER DATABASE [test] SET  OFFLINE

Posted апр 24 2008, 01:00 by Brand
Filed under:

Add a Comment

(required)  
(optional)
(required)  
Remember Me?
Powered by Community Server (Non-Commercial Edition), by Telligent Systems