Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Benutzer werden in SQL Server verwaist, wenn ein Datenbankbenutzer auf einer Anmeldung in der master Datenbank basiert, aber die Anmeldung nicht mehr vorhanden masterist. Dies kann auftreten, wenn die Anmeldung gelöscht wird oder wenn die Datenbank auf einen anderen Server verschoben wird, auf dem die Anmeldung nicht vorhanden ist. In diesem Artikel wird beschrieben, wie Sie verwaiste Benutzer finden und sie anmelden.
Hinweis
Verringern Sie mögliche verwaiste Benutzer, indem Sie eigenständige Datenbankbenutzer für Datenbanken, die verschoben werden können, verwenden. Weitere Informationen finden Sie unter Machen Sie Ihre Datenbank portabel, indem Sie eigenständige Datenbanken verwenden.
Hintergrund
Für Verbindungen mit einer Datenbank in einer Instanz von SQL Server, die einen Sicherheitsprinzipal (Datenbankbenutzeridentität) basierend auf einer Anmeldung verwenden, muss der Prinzipal über eine gültige Anmeldung in der master Datenbank verfügen. Diese Anmeldung wird im Authentifizierungsprozess verwendet, der die Identität des Prinzipals überprüft und bestimmt, ob der Prinzipal eine Verbindung mit der Instanz von SQL Server herstellen darf. Die auf einer Serverinstanz vorhandenen SQL Server -Anmeldenamen werden in der sys.server_principals -Katalogsicht und der sys.sql_logins -Kompatibilitätssicht angezeigt.
SQL Server-Anmeldungen greifen auf einzelne Datenbanken als "Datenbankbenutzer" zu, der der SQL Server-Anmeldung zugeordnet ist. Es gibt jedoch drei Ausnahmen von dieser Regel:
Eigenständige Datenbankbenutzer
Enthaltene Datenbankbenutzer authentifizieren sich auf Benutzerdatenbankebene und sind nicht mit Anmeldeinformationen verknüpft. Dieses Modell wird empfohlen, da die Datenbanken portierbarer sind und enthaltene Datenbankbenutzer nicht verwaist werden können. Sie müssen jedoch für jede Datenbank neu erstellt werden. Dieses Modell kann in einer Umgebung mit vielen Datenbanken unpraktisch sein.
Das Gastkonto
Wenn diese Option in einer Datenbank aktiviert ist, lässt dieses Konto SQL Server-Anmeldungen zu, die keinem Datenbankbenutzer zugeordnet sind, um als Gastbenutzer auf die Datenbank zuzugreifen. Das Gastkonto wird standardmäßig deaktiviert.
Microsoft Windows-Gruppenmitgliedschaften
Eine sql Server-Anmeldung, die von einem Windows-Benutzer erstellt wurde, kann auf eine Datenbank zugreifen, wenn der Windows-Benutzer Mitglied einer Windows-Gruppe ist, die auch ein Benutzer in der Datenbank ist.
Informationen zur Zuordnung einer SQL Server-Anmeldung zu einem Datenbankbenutzer werden in der Datenbank gespeichert. Er enthält den Namen des Datenbankbenutzers und den Sicherheitsbezeichner (SID) der entsprechenden SQL Server-Anmeldung. Die Berechtigungen dieses Datenbankbenutzers werden für die Autorisierung in der Datenbank verwendet.
Ein Datenbankbenutzer (basierend auf einer Anmeldung), für den die entsprechende SQL Server-Anmeldung nicht definiert ist oder in einer Serverinstanz falsch definiert ist, kann sich nicht bei der Instanz anmelden. Diese Benutzer werden als verwaiste Benutzer der Datenbank dieser Serverinstanz bezeichnet. Verwaiste Aktionen können auftreten, wenn der Datenbankbenutzer einer Anmeldung SID zugeordnet ist, die nicht in der master Datenbank vorhanden ist. Ein Datenbankbenutzer kann anschließend zu einem verwaisten Benutzer werden, wenn die Datenbank wiederhergestellt oder an eine andere SQL Server -Instanz angefügt wird, wo der Anmeldename nie erstellt wurde. Ein Datenbankbenutzer kann auch zu einem verwaisten Benutzer werden, wenn der entsprechende SQL Server -Anmeldename gelöscht wird. Selbst wenn die Anmeldung neu erstellt wird, verfügt sie über einen anderen SID, sodass der Datenbankbenutzer weiterhin verwaist ist.
Erkennen verwaister Benutzer
Für SQL Server und PDW
Um verwaiste Benutzer in SQL Server basierend auf fehlenden SQL Server-Authentifizierungsanmeldungen zu erkennen, führen Sie die folgende Anweisung in der Benutzerdatenbank aus:
SELECT dp.type_desc, dp.sid, dp.name AS user_name
FROM sys.database_principals AS dp
LEFT JOIN sys.server_principals AS sp
ON dp.sid = sp.sid
WHERE sp.sid IS NULL
AND dp.authentication_type_desc = 'INSTANCE';
Die Ausgabe listet die SQL Server-Authentifizierungsbenutzer und die entsprechenden SIDs in der aktuellen Datenbank auf, die nicht mit einer SQL Server-Anmeldung verknüpft sind.
Für Azure SQL-Datenbank und Azure Synapse Analytics
Die sys.server_principals Tabelle ist in SQL-Datenbank oder Azure Synapse Analytics nicht verfügbar. Identifizieren Sie verwaiste Benutzer in diesen Umgebungen, indem Sie die folgenden Schritte ausführen:
Stellen Sie eine Verbindung mit der
masterDatenbank her, und wählen Sie die SIDs für die Anmeldungen mithilfe der folgenden Abfrage aus:SELECT sid FROM sys.sql_logins WHERE type = 'S';Stellen Sie eine Verbindung mit der Benutzerdatenbank her, und überprüfen Sie die SIDs der Benutzer in der
sys.database_principalsTabelle mithilfe der folgenden Abfrage:SELECT name, sid, principal_id FROM sys.database_principals WHERE type = 'S' AND name NOT IN ('guest', 'INFORMATION_SCHEMA', 'sys') AND authentication_type_desc = 'INSTANCE';Vergleichen Sie die beiden Listen, um zu ermitteln, ob in der Benutzerdatenbanktabelle
sys.database_principalsBenutzer-SIDs vorhanden sind, die nicht mit Anmelde-SIDs in dermasterDatenbanktabellesql_loginsübereinstimmen.
Auflösen eines verwaisten Benutzers
Verwenden Sie in der master Datenbank die CREATE LOGIN-Anweisung mit der SID Option, eine fehlende Anmeldung erneut zu erstellen. Geben Sie den SID Datenbankbenutzer an, den Sie im vorherigen Abschnitt abgerufen haben.
CREATE LOGIN <login_name>
WITH PASSWORD = '<use_a_strong_password_here>',
SID = <SID>;
Führen Sie die ALTER USER-Anweisung in der Benutzerdatenbank aus, um einen verwaisten Benutzer einer Anmeldung zuzuordnen, die bereits vorhanden masterist:
ALTER USER <user_name> WITH Login = <login_name>;
Wenn Sie eine fehlende Anmeldung erneut erstellen, kann der Benutzer mithilfe des bereitgestellten Kennworts auf die Datenbank zugreifen. Der Benutzer kann dann das Kennwort des Anmeldekontos mithilfe der ALTER LOGIN Anweisung ändern:
ALTER LOGIN <login_name> WITH PASSWORD = '<enterStrongPasswordHere>';
Wichtig
Bei jedem Anmeldenamen kann das eigene Kennwort geändert werden. Nur Anmeldenamen mit der Berechtigung ALTER ANY LOGIN können auch die Kennwörter von anderen Benutzern ändern. Allerdings können die Kennwörter von Mitgliedern der sysadmin -Rolle nur von Mitgliedern der sysadmin -Rolle geändert werden.
Verwandte Inhalte
- LOGIN ERSTELLEN (Transact-SQL)
- ALTER USER (Transact-SQL)
- BENUTZER ERSTELLEN (Transact-SQL)
- sys.database_principals (Transact-SQL)
- sys.server_principals (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.sql_logins (Transact-SQL)
- sys.syslogins (Transact-SQL)