Delen via


sp_change_users_login (Transact-SQL)

van toepassing op:SQL Server-

Wijst een bestaande databasegebruiker toe aan een SQL Server-aanmelding.

Belangrijk

Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie. Gebruik in plaats daarvan ALTER USER.

Transact-SQL syntaxisconventies

Syntaxis

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

Argumenten

[ @Action = ] 'Actie'

Beschrijft de actie die moet worden uitgevoerd voor de opgeslagen procedure. @Action is varchar(10), zonder standaardwaarden en kan een van de volgende waarden hebben.

Waarde Beschrijving
Auto_Fix Hiermee koppelt u een gebruikersvermelding in de sys.database_principals systeemcatalogusweergave in de huidige database aan een SQL Server-aanmelding met dezelfde naam. Als er geen aanmelding met dezelfde naam bestaat, wordt er een gemaakt. Bekijk het resultaat van de Auto_Fix-instructie om te bevestigen dat de juiste koppeling daadwerkelijk is gemaakt. Vermijd het gebruik van Auto_Fix in beveiligingsgevoelige situaties.

Wanneer u Auto_Fixgebruikt, moet u @UserNamePattern en @Password opgeven als de aanmelding nog niet bestaat, anders moet u @UserNamePattern opgeven, maar @Password wordt genegeerd. @LoginName moet NULLzijn. @UserNamePattern moet een geldige gebruiker in de huidige database zijn. Aan de aanmelding kan geen andere gebruiker zijn toegewezen.
Report Geeft een lijst weer van de gebruikers en bijbehorende beveiligings-id's (SID) in de huidige database die niet zijn gekoppeld aan een aanmelding. @UserNamePattern, @LoginNameen @Password moeten worden NULL of niet zijn opgegeven.

Als u de rapportoptie wilt vervangen door een query met behulp van de systeemtabellen, vergelijkt u de vermeldingen in sys.server_principals met de vermeldingen in sys.database_principals.
Update_One Hiermee koppelt u de opgegeven @UserNamePattern in de huidige database aan een bestaande SQL Server-@LoginName. @UserNamePattern en @LoginName moeten worden opgegeven. @Password moet NULL of niet worden opgegeven.

[ @UserNamePattern = ] N'UserNamePattern'

De naam van een gebruiker in de huidige database. @UserNamePattern is sysname, met een standaardwaarde van NULL.

[ @LoginName = ] N'LoginName'

De naam van een SQL Server-aanmelding. @LoginName is sysname, met een standaardwaarde van NULL.

[ @Password = ] N'Wachtwoord'

Het wachtwoord dat is toegewezen aan een nieuwe SQL Server-aanmelding die wordt gemaakt door Auto_Fixop te geven. @Password is sysnameen kan niet worden NULL. Als er al een overeenkomende aanmelding bestaat, worden de gebruiker en aanmelding toegewezen en wordt @Password genegeerd. Als er geen overeenkomende aanmelding bestaat, maakt sp_change_users_login een nieuwe SQL Server-aanmelding en wijst @Password toe als het wachtwoord voor de nieuwe aanmelding.

Belangrijk

Gebruik altijd een sterk wachtwoord.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Resultatenset

Kolomnaam Gegevenstype Beschrijving
UserName sysname- Gebruikersnaam van database.
UserSID varbinary(85) De beveiligings-id van de gebruiker.

Opmerkingen

Gebruik sp_change_users_login om een databasegebruiker in de huidige database te koppelen aan een SQL Server-aanmelding. Als de aanmelding voor een gebruiker wordt gewijzigd, gebruikt u sp_change_users_login om de gebruiker te koppelen aan de nieuwe aanmelding zonder gebruikersmachtigingen te verliezen. De nieuwe @LoginName kan niet worden saen de @UserNamePattern kan niet worden dbo, guestof een INFORMATION_SCHEMA gebruiker.

sp_change_users_login kan niet worden gebruikt om databasegebruikers toe te wijzen aan principals, certificaten of asymmetrische sleutels op Windows-niveau.

sp_change_users_login kan niet worden gebruikt met een SQL Server-aanmelding die is gemaakt op basis van een Windows-principal of met een gebruiker die is gemaakt met behulp van CREATE USER WITHOUT LOGIN.

sp_change_users_login kan niet worden uitgevoerd binnen een door de gebruiker gedefinieerde transactie.

Machtigingen

Vereist lidmaatschap van de db_owner vaste databaserol. Alleen leden van de sysadmin vaste serverfunctie kunnen de optie Auto_Fix opgeven.

Voorbeelden

De codevoorbeelden in dit artikel gebruiken de AdventureWorks2025 of AdventureWorksDW2025 voorbeelddatabase die u kunt downloaden van de startpagina van Microsoft SQL Server Samples en Community Projects .

Een. Een rapport van de huidige gebruiker weergeven voor aanmeldingstoewijzingen

In het volgende voorbeeld wordt een rapport gegenereerd van de gebruikers in de huidige database en hun beveiligings-id's (SID's).

EXECUTE sp_change_users_login 'Report';

B. Een databasegebruiker toewijzen aan een nieuwe SQL Server-aanmelding

In het volgende voorbeeld is een databasegebruiker gekoppeld aan een nieuwe SQL Server-aanmelding. Databasegebruiker MB-Sales, die in eerste instantie is toegewezen aan een andere aanmelding, wordt opnieuw toegewezen aan aanmelding MaryB. Vervang <password> door een sterk wachtwoord.

--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. Automatisch een gebruiker toewijzen aan een aanmelding en zo nodig een nieuwe aanmelding maken

In het volgende voorbeeld ziet u hoe Auto_Fix u een bestaande gebruiker kunt toewijzen aan een aanmelding met dezelfde naam of hoe u de SQL Server-aanmelding Mary maakt met een wachtwoord als de aanmelding Mary niet bestaat. Vervang <password> door een sterk wachtwoord.

USE AdventureWorks2022;
GO

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