Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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