web-dev-qa-db-fra.com

Impossible de supprimer l'utilisateur de la base de données car l'utilisateur est déjà connecté. erreur 15434

J'ai créé l'utilisateur sagar dans la base de données SQL Server 2012 et l'ai mappé sur la base de données XYZ. Après un certain temps, j'ai supprimé la base de données XYZ et je n'ai plus besoin de l'utilisateur sagar existant également. Mais quand j'essaie de supprimer l'utilisateur de SQL Srever Management Studio. Je reçois l'exception suivante

Impossible de supprimer la connexion 'sagar' car l'utilisateur est actuellement connecté. Erreur: 15434

16
Sagar Pudi

L'utilisateur peut être supprimé après la suppression de la session en identifiant l'identificateur session_id de l'utilisateur.

SELECT session_id
FROM sys.dm_exec_sessions
WHERE login_name = 'sagar'

KILL 51  --51 is session_id here, you may get different id

Maintenant, vous pouvez supprimer le login en exécutant simplement la requête ci-dessous (ou) en utilisant les options de SQL Server Management Studio.

DROP LOGIN 'sagar'
29
Sagar Pudi

Comment vous supprimer en tant que login. Par exemple. Vous voudrez peut-être faire cela lorsque le nom d'hôte changera pour que Sql Server enregistre votre connexion sous l'ancien hôte.

Connectez-vous à SSMS. Sélectionnez le compte "sa" et changez le mot de passe pour quelque chose dont vous vous souviendrez.

Fermez SSMS, redémarrez-le, mais connectez-vous en tant que "sa" cette fois. Sélectionnez le login que vous souhaitez supprimer, cliquez avec le bouton droit de la souris sur Supprimer.

On vous dira probablement que Login possède une ou plusieurs bases de données.

Login 'hostname\The Login' owns one or more database(s).
Change the owner of the databases before dropping the logon. [MS Sql Server Error 15174]

Pour lister le propriétaire de chaque base de données:

select suser_sname(owner_sid) from sys.databases

Pour changer le propriétaire de chaque base de données en 'sa'

EXEC sp_MSforeachdb 'EXEC [?]..sp_changedbowner ''sa'' '

<- Ce sp_MSforeachdb échouera probablement pour un ou deux, comme il l'a fait pour moi. Dans mon cas, parce que cette base de données était un utilisateur unique. Changer la base de données non autorisée en multi-utilisateurs a résolu ce problème. Ensuite, je viens de lancer EXEC sp_MSforeachdb ... à nouveau.

Pour vérifier, lancez

select suser_sname(owner_sid) from sys.databases

encore une fois pour s'assurer que la connexion est parti

Supprimez maintenant cette connexion.

0
user1040323