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
SQL-databas i Microsoft Fabric
Anger om en SQL Server-inloggning är medlem i den specificerade serverrollen.
Transact-SQL syntaxkonventioner
Syntax
IS_SRVROLEMEMBER ( 'role' [ , 'login' ] )
Arguments
'roll'
Är namnet på serverrollen som kontrolleras.
rollen är sysname.
Giltiga värden för rollen är användardefinierade serverroller och följande fasta serverroller:
- Sysadmin
- serveradmin
- dbcreator
- setupadmin
- Bulkadmin
- säkerhetsadmin
- diskadmin
- offentligt
- Processadmin
'login'
Är namnet på SQL Server-inloggningen att kontrollera.
inloggning är sysname, med standardvärdet NULL. Om inget värde anges baseras resultatet på den aktuella exekveringskontexten. Om parametern innehåller ordet NULL, returnerar den NULL.
Anmärkning
Även om Microsoft Entra-inloggningar finns i offentlig förhandsvisning för Azure SQL Database och Azure Synapse, stöds inte användning av en Microsoft Entra-princip för inloggning .
Returtyper
int
| Returvärde | Description |
|---|---|
| 0 |
Inloggning är inte en medlem av rollen. I Azure SQL Database returnerar detta uttryck alltid 0. |
| 1 | Inloggning är medlem i Role. |
| NOLL | Roll eller inloggning är inte giltigt, eller så har du inte behörighet att se rollmedlemskapet. |
Anmärkningar
Använd IS_SRVROLEMEMBER för att avgöra om den nuvarande användaren kan utföra en åtgärd som kräver serverrollens behörigheter.
Om en Windows-inloggning, såsom Contoso\Mary5, anges för inloggning, returnerar IS_SRVROLEMEMBERNULL, om inte inloggningen har beviljats eller nekats direkt åtkomst till SQL Server.
Om den valfria inloggningsparametern inte anges och inloggningen är en Windows-domäninloggning, kan det vara medlem i en fast serverroll genom medlemskap i en Windows-grupp. För att lösa sådana indirekta medlemskap begär IS_SRVROLEMEMBER information om Windows-gruppmedlemskap från domänkontrollanten. Om domänkontrollanten är otillgänglig eller inte svarar returnerar IS_SRVROLEMEMBER 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_SRVROLEMEMBER skilja sig från autentisatorns (såsom Active Directory) senaste datauppdatering till SQL Server.
Om den valfria inloggningsparametern anges måste Windows-inloggningen som efterfrågas finnas i sys.server_principals, annars returnerar IS_SRVROLEMEMBER NULL. Detta indikerar att inloggningen inte är giltig.
När inloggningsparametern är en domäninloggning eller baserad på en Windows-grupp och domänkontrollanten är otillgänglig, kommer anrop till IS_SRVROLEMEMBER att misslyckas och kan returnera felaktig eller ofullständig data.
Om domänkontrollanten inte är tillgänglig returnerar anropet till IS_SRVROLEMEMBER korrekt information när Windows-principen kan autentiseras lokalt, såsom ett lokalt Windows-konto eller en SQL Server-inloggning.
IS_SRVROLEMEMBER returnerar alltid 0 när en Windows-grupp används som inloggningsargument, och denna Windows-grupp är medlem i en annan Windows-grupp som i sin tur är medlem i den specificerade serverrollen.
Inställningen User Account Control (UAC) kan också orsaka 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 sysadmin-fixserverrollen behörigheten CONTROL SERVER . Om användaren har behörigheten CONTROL SERVER men inte är medlem i rollen, kommer denna funktion korrekt att rapportera att användaren inte är medlem i sysadmin-rollen , även om användaren har samma behörigheter.
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 databasroll, använd IS_ROLEMEMBER (Transact-SQL).
Permissions
Kräver behörighet VIEW DEFINITION på serverrollen.
Examples
Följande exempel visar om SQL Server-inloggningen för den aktuella användaren är medlem av den sysadmin fasta serverrollen.
IF IS_SRVROLEMEMBER ('sysadmin') = 1
print 'Current user''s login is a member of the sysadmin role'
ELSE IF IS_SRVROLEMEMBER ('sysadmin') = 0
print 'Current user''s login is NOT a member of the sysadmin role'
ELSE IF IS_SRVROLEMEMBER ('sysadmin') IS NULL
print 'ERROR: The server role specified is not valid.';
Följande exempel visar om domäninloggningen Pat är medlem i diskadmin-fixserverrollen .
SELECT IS_SRVROLEMEMBER('diskadmin', 'Contoso\Pat');