Freigeben über


IS_MEMBER (Transact-SQL)

Zeigt an, ob der aktuelle Benutzer ein Mitglied der angegebenen Microsoft Windows-Gruppe oder SQL Server-Datenbankrolle ist.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

IS_MEMBER ( { 'group' | 'role' } )

Argumente

  • 'group'
    Der Name der Windows-Gruppe, die überprüft wird. Dieser muss das Format Domäne\Gruppe aufweisen. group ist ein Wert vom Datentyp sysname.

  • 'role'
    Der Name der SQL Server-Rolle, die überprüft wird. role ist ein Wert vom Datentyp sysname. Er kann feste Datenbankrollen oder benutzerdefinierte Rollen, nicht jedoch Serverrollen einschließen.

Rückgabetypen

int

Hinweise

IS_MEMBER gibt folgende Werte zurück.

Rückgabewert

Beschreibung

0

Der aktuelle Benutzer ist kein Mitglied von group oder role.

1

Der aktuelle Benutzer ist Mitglied von group oder role.

NULL

Entweder ist group oder role ungültig. Bei Abfrage durch eine SQL Server-Anmeldung oder eine Anmeldung, die eine Anwendungsrolle verwendet, wird NULL für eine Windows-Gruppe zurückgegeben.

IS_MEMBER bestimmt die Windows-Gruppenmitgliedschaft durch Analysieren eines Zugriffstokens, das von Windows erstellt wird. Das Zugriffstoken spiegelt keine Änderungen an der Gruppenmitgliedschaft wider, die vorgenommen werden, nachdem ein Benutzer eine Verbindung mit einer Instanz von SQL Server hergestellt hat. Die Windows-Gruppenmitgliedschaft kann nicht von einer SQL Server-Anmeldung oder einer SQL Server-Anwendungsrolle abgefragt werden.

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

Beispiele

Im folgenden Beispiel wird überprüft, ob der aktuelle Benutzer ein Mitglied einer Datenbankrolle oder einer Windows-Domänengruppe ist.

-- Test membership in db_owner and print appropriate message.
IF IS_MEMBER ('db_owner') = 1
   PRINT 'Current user is a member of the db_owner role'
ELSE IF IS_MEMBER ('db_owner') = 0
   PRINT 'Current user is NOT a member of the db_owner role'
ELSE IF IS_MEMBER ('db_owner') IS NULL
   PRINT 'ERROR: Invalid group / role specified'
GO

-- Execute SELECT if user is a member of ADVWORKS\Shipping.
IF IS_MEMBER ('ADVWORKS\Shipping') = 1
   SELECT 'User ' + USER + ' is a member of ADVWORKS\Shipping.' 
GO