Як змусити базу даних 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 не вдасться, оскільки ви використовуєте його! Так, мене просто зачепило це ...
TarkaDaal

10
Не працював для мене: Msg 5061, Рівень 16, Стан 1, Рядок 1 АЛЬТЕР ДАТАБАЗИ не вдалося, оскільки блокування не вдалося розмістити в базі даних "MyDatabase". Спробуйте ще раз пізніше. Повідомлення 5069, Рівень 16, Стан 1, Рядок 1 СТВЕРДЖУВАННЯ ПОНЯТЬ ДАТАБАЗУ.
Andez

6
Я бачив випадки, коли вам все-таки потрібно використовувати 'sp_who2 active' / 'sp_whoisactive', щоб побачити деякі вперті підключення з машин, призначених для роботи або середнього рівня, та запустити KILL із номером SPID, щоб позбутися від них
Chris Wood

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.