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
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'
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.