Eu sempre uso o seguinte:
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;
Às vezes isso pode demorar um pouco, e às vezes ele está bloqueado porque você é o único executá-lo, e você tem uma conexão ativa com o banco de dados . Verifique se há outras janelas de consulta que possam ter o mesmo contexto de banco de dados - isso pode incluir caixas de diálogo abertas, Object Explorer, IntelliSense, trabalhos de longa duração, etc.
Quando termino de fazer minhas alterações na configuração desse banco de dados, simplesmente:
ALTER DATABASE [dbname] SET ONLINE;
ALTER DATABASE [dbname] SET MULTI_USER;
Embora, às vezes, o que eu preciso fazer nesse banco de dados exija que o banco de dados esteja on-line, então às vezes eu tenho que deixá-lo no modo de usuário único e fazer o seguinte:
ALTER DATABASE [dbname] SET ONLINE;
GO
USE [dbname];
Agora eu posso fazer minhas alterações e, quando estiver pronto para a conexão de outros usuários, simplesmente:
ALTER DATABASE [dbname] SET MULTI_USER;