Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

cambia in database su "online" e imposta db su "multiutente"

^ 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.