IS_SRVROLEMEMBER (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Gibt an, ob eine SQL Server-Anmeldung Mitglied der angegebenen Serverrolle ist.

Transact-SQL-Syntaxkonventionen

Syntax

IS_SRVROLEMEMBER ( 'role' [ , 'login' ] )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

'role'
Der Name der zu überprüfenden Serverrolle. role weist den Typ sysname auf.

Gültige Werte für role sind benutzerdefinierte Serverrollen sowie die folgenden festen Serverrollen:

  • Serverrollen
  • serveradmin
  • dbcreator
  • setupadmin
  • bulkadmin
  • securityadmin
  • diskadmin
  • öffentlich
  • processadmin

'login'
Ist der Name der SQL Server-Anmeldung, die überprüft werden soll. login ist vom Datentyp sysnameund hat den Standardwert NULL. Wenn kein Wert angegeben wird, basiert das Ergebnis auf dem aktuellen Ausführungskontext. Wenn der Parameter das Wort NULL enthält, wird NULL zurückgegeben.

Hinweis

Microsoft Entra-Anmeldungen befinden sich zwar in der öffentlichen Vorschau für Azure SQL-Datenbank und Azure Synapse, die Verwendung eines Microsoft Entra-Prinzipals für die Anmeldung wird jedoch nicht unterstützt.

Rückgabetypen

int

Rückgabewert BESCHREIBUNG
0 Die Anmeldung ist kein Mitglied der Rolle.

In Azure SQL-Datenbank gibt diese Anweisung immer 0 zurück.
1 login ist ein Mitglied von role.
NULL die Rolle oder Anmeldung ist ungültig, oder Sie sind nicht berechtigt, die Rollenmitgliedschaft anzuzeigen.

Hinweise

Verwenden Sie IS_SRVROLEMEMBER, um zu bestimmen, ob der aktuelle Benutzer eine Aktion ausführen kann, die die Berechtigungen der Serverrolle erfordert.

Wenn eine Windows-Anmeldung wie „Contoso\Mary5“ für login angegeben wird, gibt IS_SRVROLEMEMBER den Wert NULL zurück, falls der Anmeldung der direkte Zugriff auf SQL Server nicht zugewiesen oder verweigert wurde.

Wenn der optionale Anmeldeparameter nicht angegeben wird und die Anmeldung eine Windows-Aufgabe ist Standard anmeldung, kann es sich um ein Mitglied einer festen Serverrolle über die Mitgliedschaft in einer Windows-Gruppe handeln. Um derartige indirekte Mitgliedschaften aufzulösen, fordert IS_SRVROLEMEMBER Informationen zu Windows-Gruppenmitgliedschaften vom Domänencontroller an. Wenn auf den Do Standard Controller nicht zugegriffen werden kann oder nicht reagiert, gibt IS_SRVROLEMEMBER Rollenmitgliedschaftsinformationen zurück, indem der Benutzer und seine lokalen Gruppen nur erfasst werden. Wenn der angegebene Benutzer nicht der aktuelle Benutzer ist, kann der von IS_SRVROLEMEMBER zurückgegebene Wert von der letzten Aktualisierung der Authentifikatoren (z. B. Active Directory) auf SQL Server abweichen.

Wenn der optionale Anmeldeparameter angegeben wird, muss die abgefragte Windows-Anmeldung in sys.server_principals vorhanden sein, oder IS_SRVROLEMEMBER NULL zurückgibt. Dies gibt an, dass die Anmeldung ungültig ist.

Wenn der Anmeldeparameter eine Domänenanmeldung ist oder auf einer Windows-Gruppe basiert und auf den Domänencontroller nicht zugegriffen werden kann, schlagen Aufrufe von IS_SRVROLEMEMBER fehl und können falsche oder unvollständige Daten zurückgeben.

Wenn der Do Standard Controller nicht verfügbar ist, gibt der Aufruf von IS_SRVROLEMEMBER genaue Informationen zurück, wenn der Windows-Prinzipal lokal authentifiziert werden kann, z. B. ein lokales Windows-Konto oder eine SQL Server-Anmeldung.

IS_SRVROLEMEMBER gibt immer 0 (null) zurück, wenn eine Windows-Gruppe als Anmeldeargument verwendet wird. Diese Windows-Gruppe ist ein Element einer anderen Windows-Gruppe, die wiederum ein Element der angegebenen Serverrolle ist.

Die Einstellung „Benutzerkontensteuerung“ kann dazu führen, dass andere Ergebnisse zurückgegeben werden. Dies hängt davon ab, ob der Benutzer auf den Server als Mitglied einer Windows-Gruppe oder als ein bestimmter SQL Server-Benutzer zugreift.

Diese Funktion wertet die Rollenmitgliedschaft aus, nicht die zugrunde liegende Berechtigung. Die feste Serverrolle sysadmin besitzt z.B. die CONTROL SERVER-Berechtigung. Wenn der Benutzer über die BERECHTIGUNG CONTROL SERVER verfügt, aber kein Mitglied der Rolle ist, meldet diese Funktion ordnungsgemäß, dass der Benutzer kein Mitglied der Sysadmin-Rolle ist, obwohl der Benutzer über die gleichen Berechtigungen verfügt.

Um festzustellen, ob der aktuelle Benutzer Mitglied der angegebenen Windows-Gruppe, Microsoft Entra-Gruppe oder SQL Server-Datenbankrolle ist, verwenden Sie IS_MEMBER (Transact-SQL).> Um zu bestimmen, ob eine SQL Server-Anmeldung Mitglied einer Datenbankrolle ist, verwenden Sie IS_ROLEMEMBER (Transact-SQL).

Berechtigungen

Erfordert die VIEW DEFINITION-Berechtigung für die Serverrolle.

Beispiele

Das folgende Beispiel gibt an, ob die SQL Server-Anmeldung für den aktuellen Benutzer Mitglied der festen Serverrolle sysadmin ist.

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.';  

Das folgende Beispiel gibt an, ob die Domänenanmeldung Pat Mitglied der festen Serverrolle diskadmin ist.

SELECT IS_SRVROLEMEMBER('diskadmin', 'Contoso\Pat');  

Weitere Informationen

IS_MEMBER (Transact-SQL)
Sicherheitsfunktionen (Transact-SQL)