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.

Themenlink (Symbol) 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 ist vom Datentyp varchar(10). action kann einen der folgenden Werte aufweisen.

    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.

    Wenn Sie Auto_Fix verwenden, müssen Sie user und password angeben, falls die Anmeldung nicht bereits vorhanden ist; andernfalls müssen Sie user angeben, password wird jedoch ignoriert. login muss den Wert NULL haben. user 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. user, login und password müssen NULL oder nicht angegeben sein.

    Um die Berichtsoption unter Verwendung der Systemtabellen durch eine Abfrage zu ersetzen, vergleichen Sie die Einträge in sys.server_prinicpals mit denen in sys.database_principals.

    Update_One

    Verknüpft den angegebenen user in der aktuellen Datenbank mit einem vorhandenen SQL Server login. user und login sind obligatorisch. password muss NULL oder nicht angegeben sein.

  • [ @UserNamePattern= ] 'user'
    Der Name eines Benutzers in der aktuellen Datenbank. user ist vom Datentyp sysname. Der Standardwert ist NULL.

  • [ @LoginName= ] 'login'
    Der Name einer SQL Server-Anmeldung. 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. Wenn kein entsprechender Anmeldename vorhanden ist, wird von sp_change_users_login ein neuer Anmeldename für SQL Server erstellt, und password wird als Kennwort für den neuen Anmeldenamen zugewiesen. password ist vom Datentyp sysname und darf nicht NULL sein.

    SicherheitshinweisSicherheitshinweis

    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 login kann nicht sa sein, und user* * kann nicht dbo, guest oder ein Benutzer von INFORMATION_SCHEMA 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.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

Siehe auch

Verweis

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)