IS_SRVROLEMEMBER (Transact-SQL)

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

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

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

    Gültige Werte für role sind:

    sysadmin

    • dbcreator

    • bulkadmin

    • diskadmin

    • processadmin

    • serveradmin

    • setupadmin

    • securityadmin

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

Rückgabetypen

int

Hinweise

IS_SRVROLEMEMBER gibt folgende Werte zurück.

Rückgabewert

Beschreibung

0

login ist kein Mitglied von role.

1

login ist ein Mitglied von role.

NULL

role oder login ist nicht gültig.

Mit dieser Funktion 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 z. B. Contoso\Mary5, für login angegeben wird, gibt IS_SRVROLEMEMBERNULL zurück, ohne dass der Anmeldung der direkte Zugang zu SQL Server gewährt oder verweigert wurde.

Wenn der optionale Anmeldeparameter nicht angegeben ist und der Anmeldename ein Windows-Domänenanmeldename 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 von der letzten Datenaktualisierung des Authentifikators (z. B. Active Directory) für SQL Server unterscheiden.

Wenn der optionale Anmeldeparameter bereitgestellt wird, muss der abgefragte Windows-Anmeldename in sys.server_principals vorhanden sein, oder IS_SRVROLEMEMBER gibt NULL zurück. Dies gibt an, dass der Anmeldename 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 geben möglicherweise falsche oder unvollständige Daten zurück.

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 einen SQL Server-Anmeldenamen.

Die Benutzerkontensteuerung in Windows Vista und Windows Server 2008 können auch andere Ergebnisse zurückgeben. Dies hängt davon ab, ob der Benutzer auf den Server als Mitglied einer Windows-Gruppe oder als ein bestimmter SQL Server-Benutzer zugegriffen hat. Weitere Informationen zur Benutzerkontensteuerung finden Sie unter Vorgehensweise: Herstellen einer Verbindung mit einem Computer mit SQL Server unter Windows Vista.

Diese Funktion wertet die Rollenmitgliedschaft und nicht die zugrunde liegende Berechtigung aus. Die feste Serverrolle sysadmin hat zum Beispiel die CONTROL SERVER-Berechtigung. Wenn der Benutzer über die CONTROL SERVER-Berechtigung verfügt, jedoch kein Mitglied der Rolle ist, zeigt diese Funktion ordnungsgemäß an, dass der Benutzer kein Mitglied der sysadmin-Rolle ist, selbst wenn er über die gleichen Berechtigungen verfügt.

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