So erzwingen Sie, dass eine SQL Server 2008-Datenbank offline geschaltet wird

106

Wie erzwinge ich, dass meine Datenbank offline geschaltet wird, unabhängig davon, was oder wer sie bereits verwendet?

Ich habe es versucht:

ALTER DATABASE database-name SET OFFLINE;

Aber es hängt immer noch nach 7 Minuten.

Ich möchte dies, weil ich das Szenario testen muss.

Wenn es überhaupt möglich ist?

Radbyx
quelle

Antworten:

186

Gehe offline

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

Online gehen

USE master
GO
ALTER DATABASE YourDatabaseName
SET ONLINE
GO
abatishchev
quelle
8
@radbyx: MSDN sagt, um zu verwenden, masterwenn DB-Status betrieben wird
abatishchev
17
@radbyx: Wenn Sie MY_DATABASE VERWENDEN, schlägt ALTER DATABASE MY_DATABASE SET OFFLINE fehl, weil Sie es verwenden! Ja, das hat mich gerade gestochen ...
TarkaDaal
10
Hat bei mir nicht funktioniert: Nachricht 5061, Ebene 16, Status 1, Zeile 1 ALTER DATABASE ist fehlgeschlagen, da die Datenbank 'MyDatabase' nicht gesperrt werden konnte. Versuchen Sie es später noch einmal. Meldung 5069, Ebene 16, Status 1, Zeile 1 ALTER DATABASE-Anweisung fehlgeschlagen.
Andez
6
Ich habe Fälle gesehen, in denen Sie immer noch ein 'sp_who2 active' / 'sp_whoisactive' verwenden müssen, um einige hartnäckige Verbindungen von geplanten Jobmaschinen oder mittelmäßigeren Dingen zu sehen und KILL mit der SPID-Nummer auszuführen, um sie loszuwerden
Chris Wood
24

Sie müssen verwenden WITH ROLLBACK IMMEDIATE, um andere Verbindungen zu starten, ohne Rücksicht darauf, was oder wer sie bereits verwendet.

Oder verwenden Sie WITH NO_WAIT, um vorhandene Verbindungen nicht aufzuhängen und nicht zu beenden. Weitere Informationen finden Sie unter http://www.blackwasp.co.uk/SQLOffline.aspx

Martin Smith
quelle