Partager via


IS_SRVROLEMEMBER (Transact-SQL)

Indique si un compte de connexion SQL Server appartient au rôle de serveur spécifié.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

  • ' role '
    Nom du rôle de serveur vérifié. role est de type sysname.

    Les valeurs valides pour role sont des rôles de serveur définis par l'utilisateur, et les rôles serveur fixes suivants :

    sysadmin

    serveradmin

    dbcreator

    setupadmin

    bulkadmin

    securityadmin

    diskadmin

    public

    processadmin

     

  • ' login '
    Nom de la connexion SQL Server à vérifier. login est de type sysname et NULL est la valeur par défaut. Si aucune valeur n'est spécifiée, le résultat est basé sur le contexte d'exécution actuel. Si le paramètre contient le mot NULL, retourne NULL.

Types des valeurs retournées

int

Valeur de retour

Description

0

login n'est pas membre de role.

1

login est membre de role.

NULL

role ou login n'est pas valide, ou vous ne disposez pas de l'autorisation nécessaire pour afficher l'appartenance au rôle.

Notes

Utilisez IS_SRVROLEMEMBER pour déterminer si l'utilisateur actuel peut réaliser une action nécessitant les autorisations du rôle de serveur.

Si un compte de connexion Windows, tel que Contoso\Mary5, est spécifié pour login, IS_SRVROLEMEMBER retourne NULL, à moins de s'être vu attribuer ou refuser l'accès direct à SQL Server.

Si le paramètre login facultatif n'est pas fourni et si login est un compte de connexion de domaine Windows, il peut s'agir d'un membre du rôle serveur fixe via une appartenance à un groupe Windows. Pour résoudre de telles appartenances indirectes, IS_SRVROLEMEMBER demande des informations sur l'appartenance au groupe Windows à partir du contrôleur du domaine. Si le contrôleur du domaine est inaccessible ou ne répond pas, IS_SRVROLEMEMBER retourne des informations sur l'appartenance au rôle, en prenant uniquement en considération l'utilisateur et ses groupes locaux. Si l'utilisateur spécifié n'est pas l'utilisateur actuel, la valeur retournée par IS_SRVROLEMEMBER peut différer de la dernière mise à jour de données de l'authentificateur (par exemple Active Directory) sur SQL Server.

Si le paramètre de connexion facultatif est fourni, le compte de connexion Windows interrogé doit être présent dans sys.server_principals, sinon IS_SRVROLEMEMBER retourne la valeur NULL. Cela indique que la connexion n'est pas valide.

Lorsque le paramètre de connexion est un compte de connexion de domaine ou lorsqu'il est basé sur un groupe Windows et que le contrôleur de domaine n'est pas accessible, les appels à IS_SRVROLEMEMBER échouent et peuvent retourner des données incorrectes ou incomplètes.

Si le contrôleur de domaine n'est pas accessible, l'appel à IS_SRVROLEMEMBER retourne des informations exactes lorsque le principe Windows peut être authentifié localement, par exemple un compte Windows local ou une connexion SQL Server.

IS_SRVROLEMEMBER retourne toujours 0 lorsqu'un groupe Windows est utilisée comme argument de connexion, et ce groupe Windows est membre d'un autre groupe Windows qui est, à son tour, un membre du rôle de serveur spécifié.

Le contrôle de compte d'utilisateur (UAC) dans Windows Vista et Windows Server 2008 peut également retourner des résultats différents. Cela varie selon que l'utilisateur a accédé au serveur en tant que membre du groupe Windows ou en tant qu'utilisateur SQL Server spécifique.

Cette fonction évalue l'appartenance au rôle, et non l'autorisation sous-jacente. Par exemple, le rôle serveur fixe sysadmin dispose de l'autorisation CONTROL SERVER Si l'utilisateur dispose de l'autorisation CONTROL SERVER, mais n'est pas membre du rôle, cette fonction signalera correctement que l'utilisateur n'est pas un membre du rôle sysadmin, bien que l'utilisateur dispose des mêmes autorisations.

Fonctions connexes

Pour déterminer si l'utilisateur actuel est membre du groupe Windows spécifié ou du rôle de base de données SQL Server, utilisez IS_MEMBER (Transact-SQL). Pour déterminer si un compte de connexionSQL Server est membre d'un rôle de base de données, utilisez IS_ROLEMEMBER (Transact-SQL).

Autorisations

Nécessite l'autorisation VIEW DEFINITION sur le rôle de serveur.

Exemples

L'exemple suivant indique si la connexion SQL Server pour l'utilisateur actuel est membre du rôle serveur fixe sysadmin.

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

L'exemple suivant indique si la connexion de domaine Pat est un membre du rôle de serveur fixe diskadmin.

SELECT IS_SRVROLEMEMBER('diskadmin', 'Contoso\Pat');

Voir aussi

Référence

IS_MEMBER (Transact-SQL)

Fonctions de sécurité (Transact-SQL)