sp_change_users_login (Transact-SQL)

gäller för:SQL Server

Mappar en befintlig databasanvändare till en SQL Server-inloggning.

Viktig

Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Använd ALTER USER i stället.

Transact-SQL syntaxkonventioner

Syntax

sp_change_users_login
    [ @Action = ] 'Action'
    [ , [ @UserNamePattern = ] N'UserNamePattern' ]
    [ , [ @LoginName = ] N'LoginName' ]
    [ , [ @Password = ] N'Password' ]
[ ; ]

Argument

[ @Action = ] "Åtgärd"

Beskriver åtgärden för den lagrade proceduren som ska utföras. @Action är varchar(10), utan standard och kan ha något av följande värden.

Värde Beskrivning
Auto_Fix Länkar en användarpost i sys.database_principals systemkatalogvyn i den aktuella databasen till en SQL Server-inloggning med samma namn. Om det inte finns någon inloggning med samma namn skapas en. Granska resultatet från Auto_Fix-instruktionen för att bekräfta att rätt länk faktiskt har gjorts. Undvik att använda Auto_Fix i säkerhetskänsliga situationer.

När du använder Auto_Fixmåste du ange @UserNamePattern och @Password om inloggningen inte redan finns, annars måste du ange @UserNamePattern men @Password ignoreras. @LoginName måste vara NULL. @UserNamePattern måste vara en giltig användare i den aktuella databasen. Inloggningen kan inte ha någon annan användare mappad till den.
Report Visar en lista över användare och motsvarande säkerhetsidentifierare (SID) i den aktuella databasen som inte är länkade till någon inloggning. @UserNamePattern, @LoginNameoch @Password måste NULL eller inte anges.

Om du vill ersätta rapportalternativet med en fråga med hjälp av systemtabellerna jämför du posterna i sys.server_principals med posterna i sys.database_principals.
Update_One Länkar den angivna @UserNamePattern i den aktuella databasen till en befintlig SQL Server-@LoginName. @UserNamePattern och @LoginName måste anges. @Password måste vara NULL eller inte anges.

[ @UserNamePattern = ] N'UserNamePattern"

Namnet på en användare i den aktuella databasen. @UserNamePattern är sysname, med standardvärdet NULL.

[ @LoginName = ] N'LoginName'

Namnet på en SQL Server-inloggning. @LoginName är sysname, med standardvärdet NULL.

[ @Password = ] N'Lösenord'

Lösenordet som tilldelats en ny SQL Server-inloggning som skapas genom att ange Auto_Fix. @Password är sysnameoch kan inte NULL. Om det redan finns en matchande inloggning mappas användaren och inloggningen och @Password ignoreras. Om det inte finns någon matchande inloggning skapar sp_change_users_login en ny SQL Server-inloggning och tilldelar @Password som lösenord för den nya inloggningen.

Viktig

Använd alltid ett starkt lösenord.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Resultatuppsättning

Kolumnnamn Datatyp Beskrivning
UserName sysname Databasanvändarnamn.
UserSID varbinary(85) Användarens säkerhetsidentifierare.

Anmärkningar

Använd sp_change_users_login för att länka en databasanvändare i den aktuella databasen med en SQL Server-inloggning. Om inloggningen för en användare ändras använder du sp_change_users_login för att länka användaren till den nya inloggningen utan att förlora användarbehörigheter. Den nya @LoginName kan inte vara saoch @UserNamePattern kan inte dbo, guesteller en INFORMATION_SCHEMA användare.

sp_change_users_login kan inte användas för att mappa databasanvändare till huvudnamn på Windows-nivå, certifikat eller asymmetriska nycklar.

sp_change_users_login kan inte användas med en SQL Server-inloggning som skapats från ett Windows-huvudnamn eller med en användare som skapats med hjälp av CREATE USER WITHOUT LOGIN.

sp_change_users_login kan inte köras i en användardefinierad transaktion.

Behörigheter

Kräver medlemskap i den db_owner fasta databasrollen. Endast medlemmar i sysadmin fast serverroll kan ange alternativet Auto_Fix.

Exempel

Kodexemplen i den här artikeln använder AdventureWorks2025- eller AdventureWorksDW2025-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.

A. Visa en rapport över den aktuella användaren för inloggningsmappningar

I följande exempel skapas en rapport över användarna i den aktuella databasen och deras säkerhetsidentifierare (SID).

EXECUTE sp_change_users_login 'Report';

B. Mappa en databasanvändare till en ny SQL Server-inloggning

I följande exempel är en databasanvändare associerad med en ny SQL Server-inloggning. Databasanvändaren MB-Sales, som först mappas till en annan inloggning, mappas om för att logga in MaryB. Ersätt <password> med ett starkt lösenord.

--Create the new login.
CREATE LOGIN MaryB WITH PASSWORD = '<password>';
GO

--Map database user MB-Sales to login MaryB.
USE AdventureWorks2022;
GO

EXECUTE sp_change_users_login 'Update_One', 'MB-Sales', 'MaryB';
GO

C. Mappa en användare automatiskt till en inloggning och skapa en ny inloggning om det behövs

I följande exempel visas hur du använder Auto_Fix för att mappa en befintlig användare till en inloggning med samma namn eller för att skapa SQL Server-inloggningen Mary med ett lösenord om inloggningen Mary inte finns. Ersätt <password> med ett starkt lösenord.

USE AdventureWorks2022;
GO

EXECUTE sp_change_users_login 'Auto_Fix', 'Mary', NULL, '<password>';
GO