sp_change_users_login (Transact-SQL)
Ordnet einen vorhandenen Datenbankbenutzer einem SQL Server-Anmeldenamen zu. Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. Verwenden Sie stattdessen ALTER USER.
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 ist vom Datentyp varchar(10). action kann die folgenden Werte haben.Wert
Beschreibung
Auto_Fix
Verknüpft einen Benutzereintrag in der sys.database_principals-Systemkatalogsicht in der aktuellen Datenbank mit einem gleichlautenden SQL Server-Anmeldenamen. Ist kein gleichlautender Anmeldename vorhanden, wird er erstellt. Überprüfen Sie das Ergebnis der Auto_Fix-Anweisung, um sicherzustellen, dass tatsächlich der richtige Link erstellt wurde. Vermeiden Sie die Verwendung von Auto_Fix in sicherheitskritischen Situationen.
Bei Verwendung von Auto_Fix müssen Sie user und password angeben, wenn der Anmeldename nicht bereits vorhanden ist. Andernfalls müssen Sie user angeben, jedoch wird password ignoriert. login muss NULL sein. user muss ein gültiger Benutzer 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. user, login und password müssen NULL oder nicht angegeben sein.
Update_One
Verknüpft den angegebenen Wert von user in der aktuellen Datenbank mit einem vorhandenen Wert von SQL Serverlogin. user und login müssen angegeben werden. password muss NULL oder nicht angegeben sein.
[ @UserNamePattern = ] 'user'
Der Name eines Benutzers in der aktuellen Datenbank. user ist vom Datentyp sysname und hat den Standardwert NULL.[ @LoginName = ] 'login'
Die Bezeichnung eines SQL Server-Anmeldenamens. login ist vom Datentyp sysname und hat den Standardwert NULL.[ @Password = ] 'password'
Das einem neuen SQL Server-Anmeldenamen zugewiesene Kennwort, der durch die Angabe von Auto_Fix erstellt wird. Ist bereits ein entsprechender Anmeldename vorhanden, werden Benutzer und Anmeldename einander zugeordnet, und password wird ignoriert. Ist kein entsprechender Anmeldename vorhanden, erstellt sp_change_users_login einen neuen SQL Server-Anmeldenamen und weist ihm password als Kennwort zu. password ist vom Datentyp sysname und darf nicht NULL sein.Sicherheitshinweis Verwenden Sie ein sicheres Kennwort. Weitere Informationen finden Sie unter Sichere Kennwörter.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Resultsets
Spaltenname |
Datentyp |
Beschreibung |
---|---|---|
UserName |
sysname |
Datenbank-Benutzername. |
UserSID |
varbinary(85) |
Sicherheits-ID des Benutzers. |
Hinweise
Mithilfe von sp_change_users_login kann ein Datenbankbenutzer in der aktuellen Datenbank mit einem SQL Server-Anmeldenamen verknüpft werden. 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 Wert von login darf nicht sa sein, und user darf nicht dbo, guest 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, die anhand eines Windows-Prinzipals erstellt wurde, oder mit einer vom Benutzer (mithilfe von CREATE USER WITHOUT LOGIN) erstellten Anmeldung verwendet werden.
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 Auto_Fix-Option 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. Erstellen einer Zuordnung zwischen einem Datenbankbenutzer und einem neuen SQL Server-Anmeldenamen
Im folgenden Beispiel wird ein Datenbankbenutzer einem neuen SQL Server-Anmeldenamen 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 AdventureWorks;
GO
EXEC sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
GO
C. Erstellen einer automatischen Zuordnung zwischen einem Benutzer und einem Anmeldenamen, wobei der neue Anmeldename ggf. erstellt wird
Im folgenden Beispiel wird veranschaulicht, wie mithilfe von Auto_Fix eine Zuordnung zwischen einem vorhandenen Benutzer und einem gleichlautenden Anmeldenamen erstellt wird oder wie der SQL Server-Anmeldename Mary mit dem Kennwort B3r12-3x$098f6 erstellt wird, wenn der Anmeldename Mary nicht vorhanden ist.
USE AdventureWorks;
GO
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';
GO