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
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-databas i Microsoft Fabric
Anger om en specificerad databashuvudperson är medlem i den angivna databasrollen.
Transact-SQL syntaxkonventioner
Anmärkning
Microsoft Entra-ID kallades tidigare Azure Active Directory (Azure AD).
Syntax
IS_ROLEMEMBER ( 'role' [ , 'database_principal' ] )
Arguments
'roll'
Är namnet på databasrollen som kontrolleras.
rollen är sysname.
'database_principal'
Är namnet på databasanvändaren, databasrollen eller applikationsrollen som ska kontrolleras.
database_principal är sysname, med standardvärdet NULL. Om inget värde anges baseras resultatet på den aktuella exekveringskontexten. Om parametern innehåller ordet NULL, kommer den att returnera NULL.
Returtyper
int
| Returvärde | Description |
|---|---|
| 0 | database_principal är inte medlem i rollen. |
| 1 | database_principal är en medlem av rollen. |
| NOLL | database_principal eller roll är inte giltig, eller så har du inte tillstånd att se rollmedlemskapet. |
Anmärkningar
Funktionen IS_ROLEMEMBER stöds inte för en Microsoft Entra-administratör när administratören är medlem i en Microsoft Entra-grupp. Funktionen IS_ROLEMEMBER stöds för Microsoft Entra-användare som är medlemmar i en Microsoft Entra-grupp, om inte den gruppen är Microsoft Entra-administratören.
Använd IS_ROLEMEMBER för att avgöra om den nuvarande användaren kan utföra en åtgärd som kräver databasrollens behörigheter.
Om database_principal baseras på en Windows-inloggning, såsom Contoso\Mary5, returnerar IS_ROLEMEMBER NULL, om inte database_principal har beviljats eller nekats direkt åtkomst till SQL Server.
Om den valfria database_principal-parametern inte finns och om database_principal baseras på en Windows-domäninloggning, kan den vara medlem i en databasroll genom medlemskap i en Windows-grupp. För att lösa sådana indirekta medlemskap begär IS_ROLEMEMBER information om Windows-gruppmedlemskap från domänkontrollanten. Om domänkontrollanten är otillgänglig eller inte svarar returnerar IS_ROLEMEMBER rollmedlemsinformation genom att endast ta hänsyn till användaren och dess lokala grupper. Om den angivna användaren inte är den nuvarande användaren kan värdet som returneras av IS_ROLEMEMBER skilja sig från autentisatorns (såsom Active Directory) senaste datauppdatering till SQL Server.
Om den valfria database_principal-parametern tillhandahålls måste användaren existera i sys.database_principals, annars returnerar IS_ROLEMEMBER NULL.
När database_principal-parametern baseras på en domäninloggning eller en Windows-grupp och domänkontrollanten är otillgänglig, kommer anrop till IS_ROLEMEMBER att misslyckas och kan returnera felaktig eller ofullständig data.
Om domänkontrollanten inte är tillgänglig returnerar anropet till IS_ROLEMEMBER korrekt information när Windows-principen kan autentiseras lokalt, såsom ett lokalt Windows-konto eller en SQL Server-inloggning.
IS_ROLEMEMBER returnerar alltid 0 när en Windows-grupp används som databasens huvudargument, och denna Windows-grupp är medlem i en annan Windows-grupp som i sin tur är medlem i den specificerade databasrollen.
User Account Control (UAC) som finns i Windows Vista och Windows Server 2008 kan också ge olika resultat. Detta beror på om användaren har tillgång till servern som medlem i Windows-gruppen eller som en specifik SQL Server-användare.
Denna funktion utvärderar rollmedlemskap, inte den underliggande behörigheten. Till exempel har den db_owner fasta databasrollen behörigheten CONTROL DATABASE . Om användaren har behörigheten CONTROL DATABASE men inte är medlem i rollen, rapporterar denna funktion korrekt att användaren inte är medlem i db_owner roll, även om användaren har samma behörigheter.
Medlemmar i sysadmin-fasta serverrollen anger varje databas som dbo-användare . Att kontrollera behörighet för medlem i sysadmin-funktionen fixade serverrollen, kontrollerar behörigheter för dbo, inte för den ursprungliga inloggningen. Eftersom dbo inte kan läggas till i en databasroll och inte finns i Windows-grupper, returnerar dbo alltid 0 (eller NULL om rollen inte finns).
Relaterade funktioner
För att avgöra om den nuvarande användaren är medlem i den specificerade Windows-gruppen, Microsoft Entra-gruppen eller SQL Server-databasrollen, använd IS_MEMBER (Transact-SQL). För att avgöra om en SQL Server-inloggning är medlem i en serverroll, använd IS_SRVROLEMEMBER (Transact-SQL).
Permissions
Kräver behörighet VIEW DEFINITION på databasrollen.
Examples
Följande exempel visar om den nuvarande användaren är medlem i den db_datareader fasta databasrollen.
IF IS_ROLEMEMBER ('db_datareader') = 1
print 'Current user is a member of the db_datareader role'
ELSE IF IS_ROLEMEMBER ('db_datareader') = 0
print 'Current user is NOT a member of the db_datareader role'
ELSE IF IS_ROLEMEMBER ('db_datareader') IS NULL
print 'ERROR: The database role specified is not valid.';
Se även
SKAPA ROLL (Transact-SQL)
ALTER ROLL (Transact-SQL)
DROPPROLL (Transact-SQL)
SKAPA SERVERROLL (Transact-SQL)
ALTER SERVER ROLL (Transact-SQL)
DROP SERVER-ROLL (Transact-SQL)
IS_MEMBER (Transact-SQL)
IS_SRVROLEMEMBER (Transact-SQL)
Säkerhetsfunktioner (Transact-SQL)