IS_SRVROLEMEMBER (Transact-SQL)

Indique si une connexion SQL Server est membre du rôle serveur fixe spécifié.

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

Syntaxe

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

Arguments

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

    Les valeurs valides pour role sont les suivantes :

    sysadmin

    • dbcreator

    • bulkadmin

    • diskadmin

    • processadmin

    • serveradmin

    • setupadmin

    • securityadmin

  • '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 sera basé sur le contexte d'exécution actuel.

Types de retour

int

Notes

IS_SRVROLEMEMBER retourne les valeurs suivantes :

Valeur de retour

Description

0

login n'est pas membre de role.

1

login est membre de role.

NULL

role ou login est incorrect.

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

Si une connexion Windows, telle que Contoso\Mary5, est spécifiée pour login, IS_SRVROLEMEMBER retourneNULL à moins de s'être vu attribuer ou refuser l'accès direct à SQL Server.

Si le paramètre de connexion facultatif n'est pas fourni et si la connexion est un 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 actualisation de données de l'authentificateur (par exemple Active Directory) sur SQL Server.

Si le paramètre de connexion facultatif est fourni, la connexion Windows interrogée doit être présente 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 une 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.

Le contrôle de compte d'utilisateur trouvé 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 de groupe Windows ou en tant qu'utilisateur SQL Server spécifique. Pour plus d'informations sur le contrôle de compte d'utilisateur, consultez Procédure : Se connecter à SQL Server depuis Windows Vista.

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

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