sp_change_users_login (Transact-SQL)

Gilt für:SQL Server

Karten eines vorhandenen Datenbankbenutzers zu einer SQL Server-Anmeldung.

Wichtig

Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. 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= ] 'Action'
Beschreibt die von der Prozedur durchzuführende Aktion. action is 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 von 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. Die Anmeldung muss NULL sein. Der 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 durch eine Abfrage mithilfe der Systemtabellen 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. das Kennwort darf NULL oder nicht angegeben sein.

[ @UserNamePattern= ] 'Benutzer'
Der Name eines Benutzers in der aktuellen Datenbank. Der Benutzer ist "sysname" mit dem Standardwert NULL.

[ @LoginName= ] 'login'
Ist der Name einer SQL Server-Anmeldung. login ist vom Datentyp sysnameund hat den Standardwert NULL.

[ @Password= ] 'Password'
Ist das Kennwort einer neuen SQL Server-Anmeldung zugewiesen, die durch Angeben 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.

Hinweise

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. Die neue Anmeldung 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 kann nicht mit einer SQL Server-Anmeldung verwendet werden, die von einem Windows-Prinzipal oder mit einem Benutzer erstellt wurde, der mit CREATE USER WITHOUT LOGIN erstellt wurde.

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

Berechtigungen

Hierfür ist die Mitgliedschaft in der festen Datenbankrolle db_owner erforderlich. 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 wird 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

Das folgende Beispiel zeigt, wie Auto_Fix Sie einen vorhandenen Benutzer einer Anmeldung mit demselben Namen zuordnen oder die SQL Server-Anmeldung Mary erstellen, die 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)