Как заставить базу данных SQL Server 2008 перейти в автономный режим

106

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

Я попытался:

ALTER DATABASE database-name SET OFFLINE;

Но через 7 мин все еще виснет.

Я хочу этого, потому что мне нужно проверить сценарий.

Если это вообще возможно?

Radbyx
источник

Ответы:

186

Перейти в офлайн

USE master
GO
ALTER DATABASE YourDatabaseName
SET OFFLINE WITH ROLLBACK IMMEDIATE
GO

Выйти в онлайн

USE master
GO
ALTER DATABASE YourDatabaseName
SET ONLINE
GO
Абатищев
источник
8
@radbyx: MSDN советует использовать masterпри работе с состоянием БД
Абатищев
17
@radbyx: Если вы ИСПОЛЬЗУЕТЕ MY_DATABASE, ALTER DATABASE MY_DATABASE SET OFFLINE завершится ошибкой, потому что вы ее используете! Да, меня это только что
ужалило
10
Не сработало для меня: Msg 5061, уровень 16, состояние 1, строка 1 ALTER DATABASE не удалось, потому что не удалось установить блокировку в базе данных MyDatabase. Попробуйте позже. Msg 5069, уровень 16, состояние 1, строка 1 Оператор ALTER DATABASE завершился неудачно.
Andez 09
6
Я видел случаи, когда вам все еще нужно было использовать sp_who2 active / sp_whoisactive, чтобы увидеть некоторые устойчивые соединения с запланированными рабочими машинами или промежуточными вещами, и запустить KILL с номером SPID, чтобы избавиться от них
Крис Вуд,
24

Вам нужно использовать WITH ROLLBACK IMMEDIATEдля загрузки других соединений, независимо от того, что или кто уже использует его.

Или используйте, WITH NO_WAITчтобы не зависать и не уничтожать существующие соединения. См http://www.blackwasp.co.uk/SQLOffline.aspx подробности

Мартин Смит
источник