Uso sempre quanto segue:
USE master; -- get out of dbname myself
GO
-- kick all other users out:
ALTER DATABASE [dbname] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- prevent sessions from re-establishing connection:
ALTER DATABASE [dbname] SET OFFLINE;
A volte questo può richiedere del tempo, a volte è bloccato perché sei tu quello che lo esegue e hai una connessione attiva al database . Controlla altre finestre di query che potrebbero avere lo stesso contesto di database: questo può includere finestre di dialogo aperte, Esplora oggetti, IntelliSense, lavori di lunga durata, ecc.
Quando ho finito di fare le mie modifiche alla configurazione di quel database, semplicemente:
ALTER DATABASE [dbname] SET ONLINE;
ALTER DATABASE [dbname] SET MULTI_USER;
Sebbene, a volte, la cosa che devo fare per quel database richieda che il database sia online, quindi a volte devo lasciarlo in modalità utente singolo e fare questo:
ALTER DATABASE [dbname] SET ONLINE;
GO
USE [dbname];
Ora posso apportare le mie modifiche e, quando sono pronto per la connessione di altri utenti, semplicemente:
ALTER DATABASE [dbname] SET MULTI_USER;