web-dev-qa-db-de.com

Der Datenbankbenutzer kann nicht gelöscht werden, da der Benutzer derzeit bereits angemeldet ist. Fehler 15434

Ich habe den Benutzer sagar in der SQL Server 2012-Datenbank erstellt und der XYZ-Datenbank zugeordnet. Nach einiger Zeit löschte ich die XYZ-Datenbank und brauche jetzt auch nicht den vorhandenen Benutzer sagar. Aber wenn ich versuche, den Benutzer aus SQL Srever Management Studio zu löschen. Ich bekomme die folgende Ausnahme

Login 'sagar' konnte nicht gelöscht werden, da der Benutzer derzeit angemeldet ist. Fehler: 15434

16
Sagar Pudi

Der Benutzer kann nach dem Beenden der Sitzung gelöscht werden, indem die session_id des Benutzers identifiziert wird.

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

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

Jetzt können Sie das Login einfach löschen, indem Sie die folgende Abfrage (oder) mit den SQL Server Management Studio-Optionen ausführen.

DROP LOGIN 'sagar'
29
Sagar Pudi

So löschen Sie sich als Login. Z.B. Möglicherweise möchten Sie dies tun, wenn sich der Hostname geändert hat, sodass der SQL Server Ihre Anmeldung unter dem alten Hostnamen aufzeichnet.

Melden Sie sich bei SSMS an. Wählen Sie das Konto "sa" aus und ändern Sie das Kennwort in etwas, das Sie sich merken können.

Schließen Sie SSMS, starten Sie es erneut, aber melden Sie sich diesmal als 'sa' an. Wählen Sie das Login aus, das Sie löschen möchten, klicken Sie mit der rechten Maustaste auf Löschen.

Sie werden wahrscheinlich darüber informiert, dass Login eine oder mehrere Datenbanken besitzt.

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]

So listen Sie den Besitzer jeder Datenbank auf:

select suser_sname(owner_sid) from sys.databases

So ändern Sie den Besitzer jeder Datenbank in "sa"

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

<- Diese sp_MSforeachdb wird wahrscheinlich für ein oder zwei wie für mich fehlschlagen. In meinem Fall, weil diese Datenbank ein einzelner Benutzer war. Das Ändern der Rogue-Datenbank in Mehrbenutzer hat das behoben. Dann lief ich EXEC sp_MSforeachdb ... nochmal.

Um zu überprüfen, renne

select suser_sname(owner_sid) from sys.databases

erneut, um sicherzustellen, dass der Login weg ist

Löschen Sie jetzt dieses Login.

0
user1040323