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
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Geeft aan of een SQL Server-login lid is van de gespecificeerde serverrol.
Transact-SQL syntaxis-conventies
Syntaxis
IS_SRVROLEMEMBER ( 'role' [ , 'login' ] )
Arguments
'rol'
Is de naam van de serverrol die wordt gecontroleerd.
Rol is Sysname.
Geldige waarden voor de rol zijn door de gebruiker gedefinieerde serverrollen en de volgende vaste serverrollen:
- Sysadmin
- serveradmin
- dbcreator
- setupadmin
- bulkadmin
- securityadmin
- diskadmin
- openbaar
- ProcesAdmin
'login'
Is de naam van de SQL Server-login die je moet controleren.
login is systeemnaam, met standaard NULL. Als er geen waarde wordt gespecificeerd, is het resultaat gebaseerd op de huidige uitvoeringscontext. Als de parameter het woord NULL bevat, geeft deze NULL terug.
Opmerking
Hoewel Microsoft Entra-logins in de publieke preview zijn voor Azure SQL Database en Azure Synapse, wordt het gebruik van een Microsoft Entra-principal voor login niet ondersteund.
Retourtypen
int
| Retourwaarde | Description |
|---|---|
| 0 |
Login is geen lid van Role. In Azure SQL Database geeft deze instructie altijd 0 terug. |
| 1 | Login is een lid van Role. |
| NUL | Rol of login is niet geldig, of je hebt geen toestemming om het rollidmaatschap te bekijken. |
Opmerkingen
Gebruik IS_SRVROLEMEMBER om te bepalen of de huidige gebruiker een actie kan uitvoeren die de rechten van de serverrol vereist.
Als een Windows-login, zoals Contoso\Mary5, is opgegeven voor inloggen, geeft IS_SRVROLEMEMBERNULL terug, tenzij de login directe toegang tot SQL Server is verleend of geweigerd.
Als de optionele loginparameter niet wordt opgegeven en als login een Windows-domeinlogin is, kan het lid zijn van een vaste serverrol via lidmaatschap van een Windows-groep. Om dergelijke indirecte lidmaatschappen op te lossen, vraagt IS_SRVROLEMEMBER Windows-groepslidmaatschapsinformatie op bij de domeincontroller. Als de domeincontroller niet toegankelijk is of niet reageert, geeft IS_SRVROLEMEMBER rollidmaatschapsinformatie terug door alleen rekening te houden met de gebruiker en zijn lokale groepen. Als de opgegeven gebruiker niet de huidige gebruiker is, kan de waarde die door IS_SRVROLEMEMBER wordt teruggegeven verschillen van de laatste data-update van de authenticator (zoals Active Directory) naar SQL Server.
Als de optionele loginparameter wordt opgegeven, moet de Windows-login die wordt geraadpleegd aanwezig zijn in sys.server_principals, anders geeft IS_SRVROLEMEMBER NULL terug. Dit geeft aan dat de login niet geldig is.
Wanneer de loginparameter een domeinlogin is of gebaseerd op een Windows-groep en de domeincontroller ontoegankelijk is, zullen aanroepen naar IS_SRVROLEMEMBER falen en kunnen onjuiste of onvolledige gegevens teruggeven.
Als de domeincontroller niet beschikbaar is, geeft de aanroep naar IS_SRVROLEMEMBER nauwkeurige informatie wanneer de Windows-principal lokaal kan worden geauthenticeerd, zoals een lokaal Windows-account of een SQL Server-login.
IS_SRVROLEMEMBER geeft altijd 0 terug wanneer een Windows-groep als inlogargument wordt gebruikt, en deze Windows-groep is lid van een andere Windows-groep die op zijn beurt lid is van de gespecificeerde serverrol.
De Gebruikersaccountbeheer (UAC)-instelling kan ook zorgen voor andere resultaten als resultaat. Dit hangt ervan af of de gebruiker de server heeft betreden als lid van een Windows-groep of als specifieke SQL Server-gebruiker.
Deze functie evalueert rollidmaatschap, niet de onderliggende toestemming. Bijvoorbeeld, de sysadmin-vaste serverrol heeft de CONTROL SERVER-recht . Als de gebruiker de CONTROL SERVER-rechten heeft maar geen lid is van de rol, zal deze functie correct rapporteren dat de gebruiker geen lid is van de sysadmin-rol , ook al heeft de gebruiker dezelfde rechten.
Gerelateerde functies
Om te bepalen of de huidige gebruiker lid is van de gespecificeerde Windows-groep, Microsoft Entra-groep of SQL Server-databaserol, gebruik IS_MEMBER (Transact-SQL). Om te bepalen of een SQL Server-login lid is van een databaserol, gebruik IS_ROLEMEMBER (Transact-SQL).
Permissions
Vereist VIEW DEFINITION-toestemming voor de serverrol.
Voorbeelden
Het volgende voorbeeld geeft aan of de SQL Server-login van de huidige gebruiker lid is van de sysadmin vaste serverrol.
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.';
Het volgende voorbeeld geeft aan of domeinlogin Pat lid is van de diskadmin vaste serverrol.
SELECT IS_SRVROLEMEMBER('diskadmin', 'Contoso\Pat');
Zie ook
IS_MEMBER (Transact-SQL)
beveiligingsfuncties (Transact-SQL)