Come forzare la disattivazione offline di un database di SQL Server 2008


106

Come faccio a forzare la disattivazione del database, indipendentemente da cosa o chi lo sta già utilizzando?

Provai:

ALTER DATABASE database-name SET OFFLINE;

Ma è ancora sospeso dopo 7 minuti.

Lo voglio perché ho bisogno di testare lo scenario.

Se è anche possibile?

Risposte:


186

Vai offline

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

Vai online

USE master
GO
ALTER DATABASE YourDatabaseName
SET ONLINE
GO

8
@radbyx: MSDN dice di usare masterquando si utilizza lo stato di DB
abatishchev

17
@radbyx: se USI MY_DATABASE, ALTER DATABASE MY_DATABASE SET OFFLINE fallirà, perché lo stai usando! Sì, sono appena stato punto da questo ...
TarkaDaal

10
Non ha funzionato per me: messaggio 5061, livello 16, stato 1, riga 1 ALTER DATABASE non riuscito perché non è stato possibile inserire un blocco sul database "MyDatabase". Riprovare più tardi. Messaggio 5069, livello 16, stato 1, istruzione ALTER DATABASE riga 1 non riuscita.
Andez

6
Ho visto casi in cui è ancora necessario utilizzare un 'sp_who2 active' / 'sp_whoisactive' per vedere alcune connessioni ostinate da macchine di lavoro pianificate o cose più mediocri ed eseguire KILL con il numero SPID per sbarazzarsene
Chris Wood

24

È necessario utilizzare WITH ROLLBACK IMMEDIATEper avviare altre connessioni senza considerare cosa o chi lo sta già utilizzando.

Oppure utilizzare WITH NO_WAITper non bloccare e non interrompere le connessioni esistenti. Vedere http://www.blackwasp.co.uk/SQLOffline.aspx per i dettagli

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.