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


106

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

Я попытался:

ALTER DATABASE database-name SET OFFLINE;

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

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

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

Ответы:


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 подробности

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.