Freigeben über


Problembehandlung bei verwaisten Benutzern (SQL Server)

Um sich bei einer instance von Microsoft SQL Server anzumelden, muss ein Prinzipal über eine gültige SQL Server-Anmeldung verfügen. Diese Anmeldung wird im Authentifizierungsprozess verwendet, der überprüft, ob der Prinzipal eine Verbindung mit dem instance von SQL Server herstellen darf. Die SQL Server Anmeldungen auf einem Server instance sind in der sys.server_principals-Katalogansicht und der sys.syslogins-Kompatibilitätsansicht sichtbar.

SQL Server Anmeldungen greifen mithilfe eines Datenbankbenutzers, der der SQL Server-Anmeldung zugeordnet ist, auf einzelne Datenbanken zu. Es gibt jedoch zwei Ausnahmen:

  • Das Gastkonto.

    Dies ist ein Konto, das bei Aktivierung in der Datenbank SQL Server Anmeldungen, die nicht einem Datenbankbenutzer zugeordnet sind, ermöglicht, die Datenbank als Gastbenutzer einzugeben.

  • Microsoft Windows-Gruppenmitgliedschaften.

    Ein von einem Windows-Benutzer erstellter SQL Server -Anmeldename kann eine Datenbank verwenden, wenn der Windows-Benutzer Mitglied einer Windows-Gruppe ist, die auch ein Benutzer der Datenbank ist.

Die Informationen für die Zuordnung eines SQL Server -Anmeldenamens zu einem Datenbankbenutzer werden in der Datenbank gespeichert. Hierzu zählen der Name des Datenbankbenutzers sowie die Sicherheits-ID (SID) des entsprechenden SQL Server -Anmeldenamens. Die Berechtigungen dieses Datenbankbenutzers werden für die Autorisierung in der Datenbank verwendet.

Ein Datenbankbenutzer, für den die entsprechende SQL Server Anmeldung nicht definiert ist oder auf einem Server falsch definiert ist, instance sich nicht beim instance anmelden kann. Diese Benutzer werden als verwaiste Benutzer der Datenbank dieser Serverinstanz bezeichnet. Ein Datenbankbenutzer kann verwaist werden, wenn die entsprechende SQL Server Anmeldung gelöscht wird. Außerdem kann ein Datenbankbenutzer verwaist werden, nachdem eine Datenbank wiederhergestellt oder an eine andere instance von SQL Server angefügt wurde. Verwaisungen treten auf, wenn der Datenbankbenutzer einer SID zugeordnet wird, die auf der neuen Serverinstanz nicht vorhanden ist.

Hinweis

Ein SQL Server Anmeldung kann nicht auf eine Datenbank zugreifen, in der kein entsprechender Datenbankbenutzer vorhanden ist, es sei denn, gast ist in dieser Datenbank aktiviert. Informationen zum Erstellen eines Datenbankbenutzerkontos finden Sie unter CREATE USER (Transact-SQL).

So ermitteln Sie verwaiste Benutzer

Zum Ermitteln von verwaisten Benutzern führen Sie die folgenden Transact-SQL-Anweisungen aus:

USE <database_name>;  
GO;   
sp_change_users_login @Action='Report';  
GO;  

Die Ausgabe listet die Benutzer und die entsprechenden Sicherheitsbezeichner (SID) in der aktuellen Datenbank auf, die mit keinem SQL Server-Anmeldenamen verknüpft sind. Weitere Informationen finden Sie unter sp_change_users_login (Transact-SQL).

Hinweis

sp_change_users_login können nicht mit SQL Server Anmeldungen verwendet werden, die von Windows erstellt werden.

So lösen Sie einen verwaisten Benutzer auf

Zum Auflösen eines verwaisten Benutzers führen Sie folgende Prozedur aus:

  1. Der folgende Befehl verknüpft das von <login_name> angegebene Serveranmeldungskonto erneut mit dem datenbankbenutzer, der von database_user> angegeben wurde<.

    USE <database_name>;  
    GO  
    sp_change_users_login @Action='update_one', @UserNamePattern='<database_user>', @LoginName='<login_name>';  
    GO  
    
    

    Weitere Informationen finden Sie unter sp_change_users_login (Transact-SQL).

  2. Nachdem Sie den im letzten Schritt angegebenen Code ausgeführt haben, kann der Benutzer wieder auf die Datenbank zugreifen. Der Benutzer kann dann das Kennwort des <login_name> Anmeldekontos mithilfe der sp_password gespeicherten Prozedur wie folgt ändern:

    USE master   
    GO  
    sp_password @old=NULL, @new='password', @loginame='<login_name>';  
    GO  
    

    Wichtig

    Nur Anmeldenamen mit der Berechtigung ALTER ANY LOGIN können auch die Kennwörter von anderen Benutzernamen ändern. Allerdings können die Kennwörter von Mitgliedern der sysadmin -Rolle nur von Mitgliedern der sysadmin -Rolle geändert werden.

    Hinweis

    sp_password können nicht für Microsoft Windows-Konten verwendet werden. Benutzer, die über ihr Windows-Netzwerkkonto eine Verbindung mit einer instance SQL Server herstellen, werden von Windows authentifiziert. Daher können ihre Kennwörter nur in Windows geändert werden.

    Weitere Informationen finden Sie unter sp_password (Transact-SQL).

Weitere Informationen

CREATE USER (Transact-SQL)
CREATE LOGIN (Transact-SQL)
sp_change_users_login (Transact-SQL)
sp_addlogin (Transact-SQL)
sp_grantlogin (Transact-SQL)
sp_password (Transact-SQL)
sys.sysusers (Transact-SQL)
sys.syslogins (Transact-SQL)