2009-05-11 7 views

risposta

10
ALTER DATABASE database-name SET OFFLINE 

Se si esegue il comando ALTER DATABASE mentre gli utenti o processi sono collegati, ma non desiderano il comando per essere bloccato, è possibile eseguire l'istruzione con l'opzione NO_WAIT. Ciò causa il fallimento del comando con un errore.

ALTER DATABASE database-name SET OFFLINE WITH NO_WAIT 

corrispondente in linea:

ALTER DATABASE database-name SET ONLINE 
2

Ecco una nota che solo potrebbe essere molto utile per voi: E 'quasi sempre possibile vedere ciò che l'interfaccia grafica sta facendo TSQLwise dietro le quinte.

c: http://www.mssqltips.com/tip.asp?tip=1505

+1

Nod Peter - io uso quel pulsante (per afferrare gli script) tutto il tempo ... un buon esempio di ciò è quando desidero cambiare la struttura/schema della tabella, e ci vogliono più di 30 secondi (default tempo di attesa prima che venga sollevato un errore di timeout ... quindi ho bisogno di prendere lo script di modifica ed eseguirlo manualmente. –

2
-- Take all user databases offline 
CREATE PROCEDURE SP_TakeOfflineAllDatabase AS 
BEGIN 
    DECLARE @db sysname, @q varchar(max); 
    DECLARE cur_db CURSOR FOR 
     SELECT name FROM sys.databases WHERE owner_sid<>0x01; 
    OPEN cur_db; 
    WHILE 1=1 
    BEGIN 
     FETCH NEXT FROM cur_db INTO @db; 
     IF @@FETCH_STATUS <> 0 
      BREAK; 
     SET @q = N'ALTER DATABASE [' + @db + N'] SET OFFLINE WITH NO_WAIT'; 
     EXEC(@q); 
    END; 
    CLOSE cur_db; 
    DEALLOCATE cur_db; 
END; 

riavviare il server prima eseguire la procedura. Chiuderà le connessioni esistenti ai database.

1

So che questo è un vecchio post ma, nel caso in cui qualcuno si imbatta in questa soluzione e preferirebbe un metodo non cursore che non viene eseguito ma restituisce gli script. Ho appena preso la soluzione precedente e l'ho convertita in una selezione basata su risultati.

DECLARE @SQL VARCHAR(8000) 

SELECT @SQL=COALESCE(@SQL,'')+'ALTER DATABASE '+name+ N' SET OFFLINE WITH NO_WAIT; 
    ' 
FROM sys.databases 
WHERE owner_sid<>0x01 
PRINT @SQL 
Problemi correlati