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?

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

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.