IS_SRVROLEMEMBER (Transact-SQL)

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

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • ' role '
    Der Name der zu überprüfenden Serverrolle. role ist vom Datentyp sysname.

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

    sysadmin

    serveradmin

    dbcreator

    setupadmin

    bulkadmin

    securityadmin

    diskadmin

    public

    processadmin

     

  • ' login '
    Der Name der zu überprüfenden SQL Server-Anmeldung. login ist ein Wert vom Datentyp sysname, der Standardwert ist NULL. Wenn kein Wert angegeben wird, basiert das Ergebnis auf dem aktuellen Ausführungskontext. Wenn der Parameter das Wort NULL enthalten ist, wird NULL zurückgegeben.

Rückgabetypen

int

Rückgabewert

Beschreibung

0

login ist kein Mitglied von role.

1

login ist ein Element von role.

NULL

role oder login ist nicht gültig, oder Sie verfügen über keine Berechtigung zum Anzeigen der Rollenmitgliedschaft.

Hinweise

Mit IS_SRVROLEMEMBER legen Sie fest, ob der aktuelle Benutzer eine Aktion ausführen kann, für die die Berechtigungen der Serverrolle erforderlich sind.

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 erteilt oder verweigert wurde.

Wenn der optionale login-Parameter nicht bereitgestellt wird und login eine Windows-Domänenanmeldung ist, kann sie aufgrund der Mitgliedschaft in einer Windows-Gruppe Mitglied einer festen Serverrolle sein. Um derartige indirekte Mitgliedschaften aufzulösen, fordert IS_SRVROLEMEMBER Informationen zu Windows-Gruppenmitgliedschaften vom Domänencontroller an. Wenn nicht auf den Domänencontroller zugegriffen werden kann oder der Domänencontroller nicht reagiert, berücksichtigt IS_SRVROLEMEMBER beim Zurückgeben der Informationen zur Rollenmitgliedschaft nur den Benutzer und die lokalen Gruppen. Wenn der angegebene Benutzer nicht der aktuelle Benutzer ist, kann sich der durch IS_SRVROLEMEMBER zurückgegebene Wert vom letzten Datenupdate des Authentifikators (z. B. Active Directory) für SQL Server unterscheiden.

Wenn der optionale Anmeldeparameter bereitgestellt wird, muss die Windows-Anmeldung, die abgefragt wird, in sys.server_principals vorhanden sein, oder IS_SRVROLEMEMBER gibt NULL zurück. 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 Domänencontroller 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 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 Benutzerkontensteuerung in Windows Vista und Windows Server 2008 kann auch andere Ergebnisse zurückgeben. Dies hängt davon ab, ob der Benutzer als Mitglied einer Windows-Gruppe oder als ein bestimmter SQL Server-Benutzer auf den Server 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 die CONTROL SERVER-Berechtigung besitzt, aber nicht Mitglied der Rolle ist, meldet diese Funktion ordnungsgemäß, dass der Benutzer nicht Mitglied der sysadmin-Rolle ist, obwohl der Benutzer dieselben Berechtigungen besitzt.

Verwandte Funktionen

Verwenden Sie IS_MEMBER (Transact-SQL), um zu ermitteln, ob der aktuelle Benutzer ein Mitglied der angegebenen Windows-Gruppe oder der SQL Server-Datenbankrolle ist. Um zu bestimmen, ob eine SQL Server-Anmeldung ein 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');

Siehe auch

Verweis

IS_MEMBER (Transact-SQL)

Sicherheitsfunktionen (Transact-SQL)