Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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