^ Questo è il problema che devi risolvere.
Assicurati di non essere IN quel database. Chiudi tutte le finestre di query ad esso connesse, chiudi Dettagli di Esplora oggetti, chiudi SSMS e riaprilo senza che Esplora oggetti sia connesso a quel server, ecc. Esegui questo:
USE [master];
GO
ALTER DATABASE mydb SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
USE mydb;
GO
Ciò dovrebbe consentirti di portarlo online, quindi eseguiresti i comandi che hai elencato.
Tuttavia:
- Questa operazione può richiedere più tempo di quanto potresti, a seconda dell'attività di rollback che deve avvenire nelle sessioni che stai espellendo.
- È sempre possibile che quando lo imposti su utente singolo, un altro processo possa essere più veloce di te e prendere quella singola connessione. Se scopri che ciò accade, puoi scoprire chi sta usando sp_whoisactive
o DMV come
sys.dm_tran_locks
- potrebbe essere necessario sospendere la connessione delle applicazioni e/o chiudere SQL Server Agent.