Як змусити базу даних 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.