Freigeben über


Problembehandlung bei verwaisten Benutzern (SQL Server)

Der Prinzipal muss einen gültigen SQL Server-Anmeldenamen besitzen, um sich bei einer Instanz von Microsoft SQL Server anzumelden. Der Anmeldename wird bei der Authentifizierung benötigt, bei der überprüft wird, ob der Prinzipal eine Verbindung mit der SQL Server-Instanz herstellen darf. Die auf einer Serverinstanz vorhandenen SQL Server-Anmeldenamen werden in der sys.server_principals-Katalogsicht und der sys.syslogins-Kompatibilitätssicht angezeigt.

SQL Server-Anmeldenamen verwenden für den Zugriff auf die einzelnen Datenbanken einen Datenbankbenutzer, der dem SQL Server-Anmeldenamen zugeordnet ist. Es gibt jedoch zwei Ausnahmen:

  • Das Gastkonto.

    Wenn dieses Konto in der Datenbank aktiviert ist, können die SQL Server-Anmeldenamen, die keinem Datenbankbenutzer zugeordnet sind, die Datenbank als Gastbenutzer verwenden.

  • 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 ein entsprechender SQL Server-Anmeldename auf einer Serverinstanz nicht oder falsch definiert ist, kann sich bei der Instanz nicht anmelden. Diese Benutzer werden als verwaiste Benutzer der Datenbank dieser Serverinstanz bezeichnet. Ein Datenbankbenutzer kann zu einem verwaisten Benutzer werden, wenn der entsprechende SQL Server-Anmeldename gelöscht wird. Ein Datenbankbenutzer kann auch dann zu einem verwaisten Benutzer werden, wenn die Datenbank auf einer anderen SQL Server-Instanz wiederhergestellt oder an eine andere SQL Server-Instanz angefügt wird. Verwaisungen treten auf, wenn der Datenbankbenutzer einer SID zugeordnet wird, die auf der neuen Serverinstanz nicht vorhanden ist.

HinweisHinweis

Ein SQL Server-Anmeldename kann nicht auf eine Datenbank zugreifen, wenn er in dieser Datenbank keinen entsprechenden Datenbankbenutzer aufweist, es sei denn, in dieser Datenbank ist guest aktiviert. Weitere Informationen zum Erstellen eines Datenbank-Benutzerkontos 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 führt alle Benutzer der aktuellen Datenbank auf, die mit keinem SQL Server-Anmeldenamen verknüpft sind, sowie die entsprechenden SIDs (Sicherheits-IDs). Weitere Informationen finden Sie unter sp_change_users_login (Transact-SQL).

HinweisHinweis

sp_change_users_login kann nicht mit SQL Server-Anmeldenamen verwendet werden, die aus Windows erstellt werden.

So lösen Sie einen verwaisten Benutzer auf

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

  1. Mit dem folgenden Befehl wird ein neuer Link zwischen dem mit <login_name> angegebenen Serveranmeldekonto und dem mit <database_user> angegebenen Datenbankbenutzer erstellt.

    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. Anschließend kann das zum Anmeldekonto <login_name> gehörige Kennwort mithilfe der gespeicherten Prozedur sp_password wie folgt geändert werden:

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

    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.

    HinweisHinweis

    sp_password kann nicht für Microsoft Windows-Konten verwendet werden. Benutzer, die über das Windows-Netzwerkkonto eine Verbindung mit SQL Server herstellen, werden durch Windows authentifiziert. Deshalb können ihre Kennwörter nur unter Windows geändert werden.

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

Siehe auch

Verweis

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)