Yo diría que nunca use el elemento "Desconectar" en la GUI a menos que sepa con certeza que la base de datos no está en uso. Por cualquier cosa. Eso es difícil de saber sin hacer un poco de trabajo preliminar, así que ¿por qué no guardar este script en algún lugar y usarlo siempre?
USE [master];
GO
ALTER DATABASE $dbname$ SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE $dbname$ SET OFFLINE;
Y luego el recíproco, por supuesto:
ALTER DATABASE $dbname$ SET ONLINE;
GO
ALTER DATABASE $dbname$ SET MULTI_USER;
La razón por la que debe configurarlo SINGLE_USER
primero es eliminar a los usuarios existentes (hay una opción para hacerlo en el diálogo de desconexión, pero no en el diálogo de desconexión), ya que SQL Server necesita acceso exclusivo a la base de datos para poder fuera de línea. Ahora, es posible que desee hacer un poco de trabajo de campo adicional de todos modos para ver quién está utilizando actualmente la base de datos, como si lo hiciera en medio de una operación de copia de seguridad grande o un trabajo ETL o lo que sea, eso podría ser problemático.
EDITAR : He presentado una sugerencia en Connect sobre esto (ver Connect # 2687832 ) y también lo he publicado en Trello (archivado en "Explorador de objetos").
ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
primero ... de lo contrario, simplemente se sienta y espera, y para una base de datos ocupada, eso podría ser para siempre.