Après avoir exécuté un déploiement de base de données (à partir d'un projet de base de données VS SQL Server) sur une base de données locale, la base de données a été laissée dans un état dans lequel le mode utilisateur unique est activé (le déploiement s'exécute en mode utilisateur unique).
Lorsque je me connecte à SSMS et que je tente quelque chose comme ceci:
ALTER DATABASE MyDatabase
SET MULTI_USER;
GO
Je reçois l'erreur:
Les modifications de l'état ou des options de la base de données 'MyDatabase' ne peuvent pas être effectuées pour le moment. La base de données est en mode mono-utilisateur et un utilisateur y est actuellement connecté.
J'ai essayé de mettre la base de données hors ligne, ce que SSMS me dit de réussir, mais cela ne semble pas réellement faire quoi que ce soit. Jusqu'à présent, je n'ai pu contourner ce problème qu'en supprimant et en recréant la base de données (ce qui est plutôt bien, car il ne s'agit que d'une base de données de test locale). Cependant, j'aimerais pouvoir réinitialiser le statut.
Comment convaincre SQL Server de sortir cette base de données du mode utilisateur unique?
En première exécution requête suivante dans la base de données master
exec sp_who
Si vous ne trouvez pas le coupable, essayez
SELECT request_session_id FROM sys.dm_tran_locks
WHERE resource_database_id = DB_ID('YourDatabase')
Tuez ensuite tous les processus qui utilisent votre base de données avec la requête suivante:
KILL spid
Puis lancez la requête suivante:
USE Master
ALTER DATABASE YourDatabase SET MULTI_USER
Ceci a été répondu ici , le code est:
use master
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
--do you stuff here
ALTER DATABASE YourDatabase SET MULTI_USER
Utilisez DAC (Connexion administrateur dédiée). Assurez-vous de l'avoir d'abord activéSous le type SSMS dans admin: pour Nom du serveur Après la connexion au maître ALTER DATABASE SET MULTI_USER
Essayez les commandes ci-dessous
D'abord exécuter ces trois commandes
USE [master]
SET DEADLOCK_PRIORITY HIGH
exec sp_dboption MyDBName, 'single user', 'FALSE';
Deuxième course ces deux commandes
ALTER DATABASE MyDBName SET MULTI_USER WITH NO_WAIT
ALTER DATABASE MyDBName SET MULTI_USER WITH ROLLBACK IMMEDIATE