Eu diria que nunca use a coisa "Take Offline" na GUI, a menos que você saiba que o banco de dados não está em uso. Por qualquer coisa. É difícil saber sem fazer algum trabalho braçal, então por que não salvar esse script em algum lugar e sempre usá-lo?
USE [master];
GO
ALTER DATABASE $dbname$ SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE $dbname$ SET OFFLINE;
E então o recíproco, é claro:
ALTER DATABASE $dbname$ SET ONLINE;
GO
ALTER DATABASE $dbname$ SET MULTI_USER;
O motivo pelo qual você precisa configurá-lo SINGLE_USER
primeiro é expulsar todos os usuários existentes (existe uma opção para fazer isso na caixa de diálogo desanexar, mas não na caixa de diálogo offline), pois o SQL Server precisa de acesso exclusivo ao banco de dados para poder offline. Agora, você pode fazer algum trabalho extra para ver quem está usando o banco de dados no momento, como se você fizesse isso no meio de uma grande operação de backup ou tarefa de ETL ou o que você tem, isso pode ser problemático.
EDIT : Eu ter apresentado uma sugestão em Conectar sobre isso (ver Ligação # 2687832 ) e também postou a Trello (arquivado em "Object Explorer").
ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
primeiro ... caso contrário, ele fica parado e aguarda, e por um banco de dados ocupado, isso pode ser para sempre.