Jak wymusić przejście bazy danych SQL Server 2008 do trybu offline

106

Jak zmusić moją bazę danych do przejścia w tryb offline, bez względu na to, co lub kto już z niej korzysta?

Próbowałem:

ALTER DATABASE database-name SET OFFLINE;

Ale nadal wisi po 7 min.

Chcę tego, ponieważ muszę przetestować scenariusz.

Jeśli to w ogóle możliwe?

radbyx
źródło

Odpowiedzi:

186

Wylogować się

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

W trybie online

USE master
GO
ALTER DATABASE YourDatabaseName
SET ONLINE
GO
abatishchev
źródło
8
@radbyx: MSDN mówi, aby używać masterpodczas obsługi stanu DB
abatishchev
17
@radbyx: Jeśli KORZYSTASZ MOJA_BAZĘ DANYCH, wówczas ALTER DATABASE MY_DATABASE SET OFFLINE nie powiedzie się, ponieważ jej używasz! Tak, właśnie to mnie
ukąsiło
10
Nie działa dla mnie: Msg 5061, poziom 16, stan 1, wiersz 1 ALTER DATABASE nie powiodło się, ponieważ nie można było umieścić blokady w bazie danych „Moja baza danych”. Spróbuj ponownie później. Msg 5069, poziom 16, stan 1, wiersz 1 Instrukcja ALTER DATABASE nie powiodła się.
Andez,
6
Widziałem sytuacje, w których nadal musisz użyć `` sp_who2 active '' / `` sp_whoisactive '', aby zobaczyć niektóre uparte połączenia z maszyn do zaplanowanych zadań lub rzeczy o średniej wartości i uruchomić KILL z numerem SPID, aby się ich pozbyć
Chris Wood
24

Musisz użyć, WITH ROLLBACK IMMEDIATEaby uruchomić inne połączenia bez względu na to, co lub kto już go używa.

Lub użyj, WITH NO_WAITaby nie zawieszać się i nie przerywać istniejących połączeń. Szczegółowe informacje można znaleźć pod adresem http://www.blackwasp.co.uk/SQLOffline.aspx

Martin Smith
źródło