web-dev-qa-db-fra.com

SQL Server 2008 R2 bloqué en mode utilisateur unique

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?

24
Paul Michaels

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
90
mehdi lotfi

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
0
Tristan

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 

0
Ankit

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
0
Pankil Agrawal