sp_change_users_login (Transact-SQL)

 

THIS TOPIC APPLIES TO: yesSQL Server (starting with 2012)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Ordnet einen vorhandenen Datenbankbenutzer einem SQL Server-Anmeldenamen zu. Dieses Feature wird in einer künftigen Version von Microsoft SQL Server entfernt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird.Verwendung ALTER USER stattdessen.

Topic link icon Transact-SQL-Syntaxkonventionen

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

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

WertDescription
Auto_fixVerknü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 Auto_Fix in sicherheitskritischen Situationen.

Bei Verwendung von Auto_Fix, müssen Sie angeben, Benutzer und Kennwort Wenn der Anmeldename nicht bereits vorhanden ist, andernfalls müssen Sie angeben Benutzer jedoch Kennwort werden ignoriert. Anmeldung muss NULL sein. Benutzer muss ein gültiger Benutzer in der aktuellen Datenbank sein. Dem Anmeldenamen kann kein anderer Benutzer zugeordnet werden.
Report (Bericht)Listet die Benutzer und entsprechenden Sicherheits-IDs (SIDs) in der aktuellen Datenbank auf, die mit keinem Anmeldenamen verknüpft sind. Benutzer, Anmeldung, und Kennwort muss NULL oder nicht angegeben.

Um die Berichtsoption durch eine Abfrage mit Bezug auf die Systemtabellen zu ersetzen, vergleichen Sie die Einträge in server_prinicpals mit den Einträgen in Sys. database_principals.
Update_OneVerknüpft den angegebenen Benutzer in der aktuellen Datenbank zu einem vorhandenen SQL Server Anmeldung. Benutzer und Anmeldung muss angegeben werden. Kennwort muss NULL oder nicht angegeben.

[ @UserNamePattern= ] 'user'
Der Name eines Benutzers in der aktuellen Datenbank. Benutzer ist Sysname, hat den Standardwert NULL.

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

[ @Password= ] 'password'
Zugewiesene Kennwort in ein neues SQL Server Anmeldung durch die Angabe erstellte Auto_Fix. Wenn kein entsprechender Anmeldename vorhanden ist, die Benutzer und Anmeldenamen zugeordnet sind und Kennwort wird ignoriert. Wenn kein entsprechender Anmeldename nicht existiert, erstellt Sp_change_users_login einen neuen SQL Server -Anmeldenamen und weist ihm Kennwort als Kennwort für den neuen Anmeldenamen. Kennwort ist Sysname, und darf nicht NULL sein.

WICHTIG! Verwenden Sie immer eine sicheres Kennwort!

0 (Erfolg) oder 1 (Fehler)

SpaltennameDatentypDescription
UserNamesysnameDatenbank-Benutzername.
UserSIDvarbinary (85)Sicherheits-ID des Benutzers.

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. Die neue Anmeldung darf nicht sa sein, und die Benutzerdarf nicht Dbo, Guest oder ein INFORMATION_SCHEMA-Benutzer.

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.

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

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 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 AdventureWorks2012;  
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 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 AdventureWorks2012;  
GO  
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';  
GO  

Gespeicherte Sicherheitsprozeduren (Transact-SQL)
ANMELDUNGSERSTELLUNG (Transact-SQL)
Sp_adduser (Transact-SQL)
Sp_helplogins (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)
Sys. database_principals (Transact-SQL)

Community-Beiträge

HINZUFÜGEN
Anzeigen: