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 rubrique Conventions de la syntaxe 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 retourné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.

Pour ajouter et supprimer des membres d'un rôle de base de données, utilisez ALTER ROLE (Transact-SQL). Pour ajouter et supprimer des membres d'un rôle de serveur, utilisez ALTER SERVER ROLE (Transact-SQL).

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 dispose de l'autorisation CONTROL DATABASE. Si l'utilisateur possède l'autorisation CONTROL DATABASE, mais n'est pas membre du rôle, cette fonction signale correctement que l'utilisateur n'est pas membre du rôle db_owner, bien qu'il dispose des mêmes autorisations.

Fonctions connexes

Pour déterminer si un autre compte de connexion SQL Server est membre d'un rôle de base de données, utilisez IS_ROLEMEMBER (Transact-SQL). Pour déterminer si un compte de connexion SQL Server est membre d'un rôle de serveur, utilisez IS_SRVROLEMEMBER (Transact-SQL).

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

Voir aussi

Référence

IS_SRVROLEMEMBER (Transact-SQL)

Affichages catalogue liées à la sécurité (Transact-SQL)

Fonctions de sécurité (Transact-SQL)

Concepts

Principaux (moteur de base de données)