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.