sp_change_users_login (Transact-SQL)

Gilt für:SQL Server

Ordnet einen vorhandenen Datenbankbenutzer einer SQL Server-Anmeldung zu.

Wichtig

Dieses Feature wird in einer künftigen Version von Microsoft SQL Server entfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Verwenden Sie stattdessen ALTER USER .

Transact-SQL-Syntaxkonventionen

Syntax

  
sp_change_users_login [ @Action = ] 'action'   
    [ , [ @UserNamePattern = ] 'user' ]   
    [ , [ @LoginName = ] 'login' ]   
    [ , [ @Password = ] 'password' ]  
[;]  

Argumente

[ @Action= ] 'Aktion'
Beschreibt die von der Prozedur durchzuführende Aktion. Action ist varchar(10). action kann einen der folgenden Werte aufweisen.

Wert BESCHREIBUNG
Auto_Fix Verknüpft einen Benutzereintrag in der sys.database_principals Systemkatalogansicht in der aktuellen Datenbank mit einer SQL Server Anmeldung mit demselben Namen. Ist kein gleichlautender Anmeldename vorhanden, wird er erstellt. Überprüfen Sie das Ergebnis der Auto_Fix-Anweisung , um zu bestätigen, dass der richtige Link tatsächlich hergestellt wurde. Vermeiden Sie die Verwendung Auto_Fix in sicherheitsrelevanten Situationen.

Wenn Sie Auto_Fix verwenden, müssen Sie Benutzer und Kennwort angeben, wenn die Anmeldung noch nicht vorhanden ist. Andernfalls müssen Sie den Benutzer angeben, aber das Kennwort wird ignoriert. login muss NULL sein. benutzer muss ein gültiger Benutzer in der aktuellen Datenbank sein. Dem Anmeldenamen kann kein anderer Benutzer zugeordnet werden.
Report Listet die Benutzer und entsprechenden Sicherheits-IDs (SIDs) in der aktuellen Datenbank auf, die mit keinem Anmeldenamen verknüpft sind. Benutzer, Anmeldung und Kennwort müssen NULL oder nicht angegeben sein.

Um die Berichtsoption mithilfe der Systemtabellen durch eine Abfrage zu ersetzen, vergleichen Sie die Einträge in sys.server_prinicpals mit den Einträgen in sys.database_principals.
Update_One Verknüpft den angegebenen Benutzer in der aktuellen Datenbank mit einer vorhandenen SQL Server-Anmeldung. Benutzer und Anmeldung müssen angegeben werden. kennwort muss NULL sein oder nicht angegeben sein.

[ @UserNamePattern= ] "User"
Der Name eines Benutzers in der aktuellen Datenbank. user is sysname, with a default of NULL.

[ @LoginName= ] "Login"
Der Name eines SQL Server-Anmeldenamens. login ist vom Datentyp sysnameund hat den Standardwert NULL.

[ @Password= ] 'kennwort'
Ist das Kennwort, das einem neuen SQL Server-Anmeldenamen zugewiesen ist, der durch Angabe von Auto_Fix erstellt wird. Wenn bereits eine übereinstimmende Anmeldung vorhanden ist, werden der Benutzer und die Anmeldung zugeordnet, und das Kennwort wird ignoriert. Wenn keine übereinstimmende Anmeldung vorhanden ist, erstellt sp_change_users_login eine neue SQL Server Anmeldung und weist das Kennwort als Kennwort für die neue Anmeldung zu. password ist sysname und darf nicht NULL sein.

Wichtig

Verwenden Sie immer ein sicheres Kennwort!

Rückgabecodewerte

„0“ (erfolgreich) oder „1“ (fehlerhaft)

Resultsets

Spaltenname Datentyp BESCHREIBUNG
UserName sysname Datenbank-Benutzername.
UserSID varbinary(85) Sicherheits-ID des Benutzers.

Bemerkungen

Verwenden Sie sp_change_users_login, um einen Datenbankbenutzer in der aktuellen Datenbank mit einer SQL Server Anmeldung zu verknüpfen. Wenn sich der Anmeldename für einen Benutzer geändert hat, verknüpfen Sie den Benutzer mithilfe von sp_change_users_login mit dem neuen Anmeldenamen, ohne die Benutzerberechtigungen zu verlieren. Der neue Anmeldenamen kann nicht sa sein, und der Benutzer kann nicht dbo, gast oder ein INFORMATION_SCHEMA Benutzer sein.

sp_change_users_login kann nicht zum Erstellen einer Zuordnung zwischen Datenbankbenutzern und Prinzipalen, Zertifikaten oder asymmetrischen Schlüsseln auf Windows-Ebene verwendet werden.

sp_change_users_login können nicht mit einer SQL Server Anmeldung verwendet werden, die aus einem Windows-Prinzipal erstellt wurde, oder mit einem Benutzer, der mit CREATE USER WITHOUT LOGIN erstellt wurde.

sp_change_users_login kann nicht innerhalb einer benutzerdefinierten Transaktion ausgeführt werden.

Berechtigungen

Erfordert die Mitgliedschaft in der festen Datenbankrolle "db_owner". Nur Mitglieder der festen Serverrolle sysadmin können die Option Auto_Fix angeben.

Beispiele

A. Anzeigen eines Berichts der aktuellen Zuordnungen zwischen Benutzern und Anmeldenamen

Im folgenden Beispiel wird ein Bericht über die Benutzer in der aktuellen Datenbank und ihre Sicherheits-IDs erstellt.

EXEC sp_change_users_login 'Report';  

B. Zuordnen eines Datenbankbenutzers zu einer neuen SQL Server-Anmeldung

Im folgenden Beispiel ist ein Datenbankbenutzer einer neuen SQL Server Anmeldung zugeordnet. Datenbankbenutzer MB-Sales, der zunächst einem anderen Anmeldenamen zugeordnet ist, wird dem Anmeldenamen MaryB zugeordnet.

--Create the new login.  
CREATE LOGIN MaryB WITH PASSWORD = '982734snfdHHkjj3';  
GO  
--Map database user MB-Sales to login MaryB.  
USE AdventureWorks2022;  
GO  
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';  
GO  

C. Automatisches Zuordnen eines Benutzers zu einer Anmeldung und ggf. Erstellen einer neuen Anmeldung

Im folgenden Beispiel wird gezeigt, wie Auto_Fix Sie einen vorhandenen Benutzer einer Anmeldung mit demselben Namen zuordnen oder den SQL Server-Anmeldenamen Mary erstellen, der das Kennwort B3r12-3x$098f6 enthält, wenn die Anmeldung Mary nicht vorhanden ist.

USE AdventureWorks2022;  
GO  
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';  
GO  

Weitere Informationen

Gespeicherte Sicherheitsprozeduren (Transact-SQL)
CREATE LOGIN (Transact-SQL)
sp_adduser (Transact-SQL)
sp_helplogins (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)
sys.database_principals (Transact-SQL)