Partager via


IS_MEMBER (Transact-SQL)

Indique si l'utilisateur actuel est membre du groupe Microsoft Windows ou du rôle de base de données SQL Server spécifié.

Icône Lien de rubriqueConventions de syntaxe de Transact-SQL

Syntaxe

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

Arguments

  • 'group'
    Nom du groupe Windows en cours de vérification ; doit respecter le format Domain\Group. group est de type sysname.

  • 'role'
    Nom du rôle SQL Server en cours de vérification. role est de type sysname et peut comprendre les rôles de base de données fixes ou les rôles définis par l'utilisateur, mais pas les rôles de serveur.

Types de retour

int

Notes

IS_MEMBER retourne les valeurs suivantes.

Valeur renvoyée

Description

0

L'utilisateur actuel n'est membre ni du group ni du role.

1

L'utilisateur actuel est membre du group ou du role.

NULL

group ou role est incorrect. En cas d'interrogation par une connexion SQL Server ou une connexion utilisant un rôle d'application, retourne NULL pour un groupe Windows.

IS_MEMBER détermine l'appartenance au groupe Windows en examinant un jeton d'accès créé par Windows. Le jeton d'accès ne reflète pas les modifications apportées à l'appartenance au groupe après la connexion d'un utilisateur à une instance de SQL Server. L'appartenance au groupe Windows ne peut pas être interrogée par une connexion SQL Server ou un rôle d'application SQL Server.

Cette fonction évalue l'appartenance au rôle, et non l'autorisation sous-jacente. Par exemple, le rôle de base de données fixe db_owner détient l'autorisation CONTROL DATABASE. Si l'utilisateur détient l'autorisation CONTROL DATABASE, mais n'est pas membre du rôle, cette fonction signalera correctement que l'utilisateur n'est pas un membre du rôle db_owner, bien que l'utilisateur détienne les mêmes autorisations.

Exemples

L'exemple suivant vérifie si l'utilisateur actuel est membre d'un rôle de base de données ou d'un groupe de domaines Windows.

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