Je veux renommer une base de données, mais je reçois toujours l'erreur "Impossible d'obtenir le verrouillage exclusif" sur la base de données, ce qui implique qu'il y a encore une ou plusieurs connexions actives.
Comment puis-je supprimer toutes les connexions à la base de données afin de pouvoir la renommer?
Script pour accomplir cela, remplacez 'DB_NAME' par la base de données pour tuer toutes les connexions à:
la source
and spid <> @@SPID
à laSELECT @sKillConnection
déclaration afin qu'elle n'essaye pas de tuer ma connexion actuelle, ce qui générerait un message d'erreur.Tuez-le et tuez-le avec le feu:
la source
Utilisation de SQL Management Studio Express:
Dans l'arborescence de l'Explorateur d'objets, descendez sous Gestion jusqu'à "Moniteur d'activité" (si vous ne le trouvez pas, cliquez avec le bouton droit sur le serveur de base de données et sélectionnez "Moniteur d'activité"). En ouvrant le moniteur d'activité, vous pouvez afficher toutes les informations sur le processus. Vous devriez pouvoir trouver les verrous pour la base de données qui vous intéresse et tuer ces verrous, ce qui tuera également la connexion.
Vous devriez pouvoir renommer après cela.
la source
J'ai toujours utilisé:
la source
la source
Prendre hors ligne prend un certain temps et parfois je rencontre des problèmes avec ça ..
La façon la plus solide à mon avis:
Détacher le clic droit sur la base de données -> Tâches -> Détacher ... cocher "Supprimer les connexions" Ok
Rattacher Cliquez avec le bouton droit sur Bases de données -> Attacher .. Ajouter ... -> sélectionnez votre base de données et modifiez la colonne Attacher en en tant que nom de base de données souhaité. D'accord
la source
utilisez la base de données 'master' et exécutez cette requête, cela tuera toutes les connexions actives de votre base de données.
la source
Je rencontre généralement cette erreur lorsque j'essaie de restaurer une base de données.Je vais généralement en haut de l'arborescence dans Management Studio et cliquez avec le bouton droit et redémarrez le serveur de base de données (car il se trouve sur une machine de développement, cela pourrait ne pas être idéal en production ). Ceci ferme toutes les connexions à la base de données.
la source
ALTER DATABASE ... SET SINGLE_USER
commandes dans les autres réponses ont renvoyé la même erreur «impossible d'obtenir le verrouillage exclusif»).Dans MS SQL Server Management Studio sur l'explorateur d'objets, cliquez avec le bouton droit sur la base de données. Dans le menu contextuel qui suit, sélectionnez «Tâches -> Déconnecter»
la source
Une autre approche "tuer avec le feu" consiste à simplement redémarrer le service MSSQLSERVER. J'aime faire des choses depuis la ligne de commande. Le coller exactement dans CMD le fera: NET STOP MSSQLSERVER & NET START MSSQLSERVER
Ou ouvrez "services.msc" et recherchez "SQL Server (MSSQLSERVER)" et faites un clic droit, sélectionnez "redémarrer".
Cela va "à coup sûr, à coup sûr" tuer TOUTES les connexions à TOUTES les bases de données s'exécutant sur cette instance.
(J'aime mieux cela que de nombreuses approches qui changent et changent la configuration sur le serveur / base de données)
la source
Voici comment faire ce genre de chose de manière fiable dans MS SQL Server Management Studio 2008 (peut également fonctionner pour d'autres versions):
la source
L'option qui fonctionne pour moi dans ce scénario est la suivante:
la source
Essaye ça:
la source
Cliquez avec le bouton droit sur le nom de la base de données, cliquez sur Propriété pour obtenir la fenêtre des propriétés, ouvrez l'onglet Options et modifiez la propriété "Restreindre l'accès" de Multi-utilisateur à Utilisateur unique. Lorsque vous appuyez sur le bouton OK, il vous invite à fermer toutes les connexions ouvertes, sélectionnez "Oui" et vous êtes prêt à renommer la base de données ....
la source
Ceux-ci ne fonctionnaient pas pour moi (SQL2008 Enterprise), je ne pouvais pas non plus voir de processus en cours ou d'utilisateurs connectés à la base de données. Le redémarrage du serveur (clic droit sur Sql Server dans Management Studio et choisissez Redémarrer) m'a permis de restaurer la base de données.
la source
J'utilise SQL Server 2008 R2, ma base de données était déjà définie pour un utilisateur unique et il y avait une connexion qui limitait toute action sur la base de données. Ainsi, la solution recommandée de SQLMenace a répondu par erreur. Voici celui qui a fonctionné dans mon cas .
la source
J'utilise sp_who pour obtenir la liste de tous les processus dans la base de données. C'est mieux parce que vous voudrez peut-être revoir le processus à tuer.
Résultat
Vous pouvez utiliser la commande dans la colonne KillCommand pour tuer le processus que vous souhaitez.
la source
Vous pouvez utiliser la commande SP_Who et tuer tous les processus qui utilisent votre base de données, puis renommer votre base de données.
la source