Delen via


sp_addrolemember (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform Systeem (PDW)SQL-database in Microsoft Fabric

Voegt een databasegebruiker, databaserol, Windows-aanmelding of Windows-groep toe aan een databaserol in de huidige database.

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 ROLE .

Transact-SQL syntaxis-conventies

Syntaxis

sp_addrolemember
    [ @rolename = ] N'rolename'
    , [ @membername = ] N'membername'
[ ; ]

Opmerking

Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.

Arguments

[ @rolename = ] N'rolnaam'

De naam van de databaserol in de huidige database. @rolename is een systeemnaam, zonder standaard.

[ @membername = ] Naamnaam'

Het beveiligingsaccount wordt toegevoegd aan de rol. @membername is een systeemnaam, zonder standaard. @membername kan een databasegebruiker, databaserol, Windows-login of Windows-groep zijn.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Opmerkingen

Een lid dat aan een rol wordt toegevoegd door gebruik te maken sp_addrolemember , erft de rechten van de rol. Als het nieuwe lid een Windows-niveau principal is zonder een bijbehorende databasegebruiker, wordt er een databasegebruiker aangemaakt, maar deze is mogelijk niet volledig gekoppeld aan de login. Controleer altijd of de login bestaat en toegang heeft tot de database.

Een rol kan zichzelf niet als lid bevatten. Dergelijke circulaire definities zijn niet geldig, zelfs niet wanneer lidmaatschap indirect wordt geïmpliceerd door een of meer tussenliggende lidmaatschappen.

sp_addrolemember Je kunt geen vaste databaserol, vaste serverrol of DBO aan een rol toevoegen.

Gebruik alleen sp_addrolemember om een lid toe te voegen aan een databaserol. Om een lid toe te voegen aan een serverrol, gebruik sp_addsrvrolemember.

Permissions

Het toevoegen van leden aan flexibele databaserollen vereist een van de volgende rechten:

  • Lidmaatschap van de db_securityadmin of db_owner vaste databaserol.

  • Lidmaatschap in de rol die de rol bezit.

  • ALTER ANY ROLE Toestemming of ALTER toestemming voor de rol.

Het toevoegen van leden aan vaste databaserollen vereist lidmaatschap van de db_owner vaste databaserol.

Voorbeelden

Eén. Voeg een Windows-login toe

Het volgende voorbeeld voegt de Windows-login Contoso\Mary5 toe aan de AdventureWorks2025 database als gebruiker Mary5. De gebruiker Mary5 wordt vervolgens aan de Production rol toegevoegd.

Omdat Contoso\Mary5 bekend staat als de databasegebruiker Mary5 in de AdventureWorks2025 database, moet de gebruikersnaam Mary5 worden opgegeven. De verklaring faalt tenzij er een Contoso\Mary5 login bestaat. Test door in te loggen vanuit je domein.

USE AdventureWorks2022;
GO

CREATE USER Mary5 FOR LOGIN [Contoso\Mary5];
GO

B. Voeg een databasegebruiker toe

Het volgende voorbeeld voegt de databasegebruiker Mary5 toe aan de Production databaserol in de huidige database.

EXECUTE sp_addrolemember 'Production', 'Mary5';

Voorbeelden: Analytics Platform System (PDW)

C. Voeg een Windows-login toe

Het volgende voorbeeld voegt de login LoginMary toe aan de AdventureWorks2025 database als gebruiker UserMary. De gebruiker UserMary wordt vervolgens aan de Production rol toegevoegd.

Opmerking

Omdat de login LoginMary in de UserMary database bekend staat als de databasegebruikerAdventureWorks2025, moet de gebruikersnaam UserMary worden opgegeven. De verklaring zal falen tenzij er een Mary5 login bestaat. Inloggegevens en gebruikers hebben meestal dezelfde naam. Dit voorbeeld gebruikt verschillende namen om de acties die de login beïnvloeden te onderscheiden van die van de gebruiker.

-- Uses AdventureWorks2022
CREATE USER UserMary FOR LOGIN LoginMary;
GO

EXECUTE sp_addrolemember 'Production', 'UserMary';

D. Voeg een databasegebruiker toe

Het volgende voorbeeld voegt de databasegebruiker UserMary toe aan de Production databaserol in de huidige database.

EXECUTE sp_addrolemember 'Production', 'UserMary';