Freigeben über


sp_change_users_login (Transact-SQL)

Gilt für: SQL Server

Ordnet einen vorhandenen Datenbankbenutzer einer SQL Server-Anmeldung zu.

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 = ] N'UserNamePattern' ]
    [ , [ @LoginName = ] N'LoginName' ]
    [ , [ @Password = ] N'Password' ]
[ ; ]

Argumente

[ @Action = ] 'Aktion'

Beschreibt die Aktion für die auszuführende gespeicherte Prozedur. @Action ist varchar(10) ohne Standard und 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. Wenn eine Anmeldung mit demselben Namen nicht vorhanden ist, wird eine erstellt. Überprüfen Sie das Ergebnis aus der Auto_Fix Anweisung, um zu bestätigen, dass der richtige Link tatsächlich hergestellt wurde. Vermeiden Sie die Verwendung Auto_Fix in sicherheitskritischen Situationen.

Bei Verwendung Auto_Fixmüssen Sie @UserNamePattern und @Password angeben, wenn die Anmeldung noch nicht vorhanden ist, andernfalls müssen Sie @UserNamePattern angeben, @Password jedoch ignoriert wird. @LoginName muss seinNULL. @UserNamePattern muss ein gültiger Benutzer in der aktuellen Datenbank sein. Die Anmeldung kann keinem anderen Benutzer zugeordnet werden.
Report Listet die Benutzer und die entsprechenden Sicherheits-IDs (SID) in der aktuellen Datenbank auf, die nicht mit einer Anmeldung verknüpft sind. @UserNamePattern, @LoginName und @Password dürfen oder nicht angegeben werdenNULL.

Um die Berichtsoption durch eine Abfrage mithilfe der Systemtabellen zu ersetzen, vergleichen Sie die Einträge mit sys.server_prinicpals den Einträgen in sys.database_principals.
Update_One Verknüpft die angegebene @UserNamePattern in der aktuellen Datenbank mit einem vorhandenen SQL Server -@LoginName. @UserNamePattern und @LoginName müssen angegeben werden. @Password darf nicht angegeben werdenNULL.

[ @UserNamePattern = ] N'UserNamePattern'

Der Name eines Benutzers in der aktuellen Datenbank. @UserNamePattern ist "sysname" mit der Standardeinstellung "NULL.

[ @LoginName = ] N'LoginName'

Der Name einer SQL Server-Anmeldung. @LoginName ist "sysname" mit der Standardeinstellung "NULL.

[ @Password = ] N'Kennwort'

Das Kennwort, das einer neuen SQL Server-Anmeldung zugewiesen ist, die durch Angeben Auto_Fixerstellt wird. @Password ist "sysname" und kann nicht seinNULL. Wenn bereits eine übereinstimmende Anmeldung vorhanden ist, werden der Benutzer und die Anmeldung zugeordnet und @Password ignoriert. Wenn keine übereinstimmende Anmeldung vorhanden ist, sp_change_users_login wird eine neue SQL Server-Anmeldung erstellt und @Password als Kennwort für die neue Anmeldung zugewiesen.

Wichtig

Verwenden Sie immer ein sicheres Kennwort.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Resultset

Spaltenname Datentyp Beschreibung
UserName sysname Datenbank-Benutzername.
UserSID varbinary(85) Sicherheits-ID des Benutzers.

Hinweise

Dient sp_change_users_login zum Verknüpfen eines Datenbankbenutzers in der aktuellen Datenbank mit einer SQL Server-Anmeldung. Wenn sich die Anmeldung für einen Benutzer ändert, verwenden Sie diese, sp_change_users_login um den Benutzer mit der neuen Anmeldung zu verknüpfen, ohne die Benutzerberechtigungen zu verlieren. Die neue @LoginName kann nicht seinsa, und die @UserNamePattern kann weder , guestnoch ein INFORMATION_SCHEMA Benutzer seindbo.

sp_change_users_login Kann nicht verwendet werden, um Datenbankbenutzern Prinzipale, Zertifikaten oder asymmetrischen Schlüsseln auf Windows-Ebene zuzuordnen.

sp_change_users_loginkann nicht mit einer SQL Server-Anmeldung verwendet werden, die aus einem Windows-Prinzipal oder mit einem benutzer erstellt wurde.CREATE USER WITHOUT LOGIN

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 Auto_Fix Option angeben.

Beispiele

Die Transact-SQL-Codebeispiele in diesem Artikel verwenden die AdventureWorks2022- oder AdventureWorksDW2022-Beispieldatenbank, die Sie von der Homepage Microsoft SQL Server Samples and Community Projects herunterladen können.

A. Anzeigen eines Berichts des aktuellen Benutzers zu Anmeldezuordnungen

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 Erstellen einer neuen Anmeldung bei Bedarf

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 ist, wenn die Anmeldung Mary nicht vorhanden ist.

USE AdventureWorks2022;
GO
EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-3x$098f6';
GO