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 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.

    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 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