IS_SRVROLEMEMBER (Transact-SQL)

Indica si en el inicio de sesión de SQL Server es miembro del rol de servidor especificado.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • ' role '
    Es el nombre del rol de servidor que se va comprobar. role es de tipo sysname.

    Los valores válidos para role son los roles de servidor definidos por el usuario y los siguientes roles fijos de servidor:

    sysadmin

    serveradmin

    dbcreator

    setupadmin

    bulkadmin

    securityadmin

    diskadmin

    public

    processadmin

     

  • ' login '
    Es el nombre del inicio de sesión de SQL Server que se va a comprobar. login es de tipo sysname y su valor predeterminado es NULL. Si no se especifica ningún valor, el resultado se basa en el contexto de ejecución actual. Si el parámetro contiene la palabra NULL, se devolverá NULL.

Tipos de valor devuelto

int

Valor devuelto

Descripción

0

login no es miembro de role.

1

login es miembro de role.

NULL

role o login no es válido, o no tiene permiso para ver la pertenencia a roles.

Comentarios

Use IS_SRVROLEMEMBER para determinar si el usuario actual puede realizar una acción que necesite los permisos del rol de servidor.

Si se especifica un inicio de sesión de Windows, como Contoso\Mary5, para el parámetro login, IS_SRVROLEMEMBER devuelve NULL, a menos que se haya concedido o denegado al inicio de sesión el acceso directo a SQL Server.

Si el parámetro login opcional no se proporciona y login es un inicio de sesión de dominio de Windows, puede ser miembro del rol fijo de servidor mediante la pertenencia a un grupo de Windows. Para resolver estas pertenencias indirectas, IS_SRVROLEMEMBER solicita al controlador de dominio información sobre la pertenencia a grupos de Windows. Si no se puede tener acceso al controlador de dominio o no responde, IS_SRVROLEMEMBER devuelve información sobre la pertenencia a roles dando cuenta únicamente al usuario y sus grupos locales. Si el usuario especificado no es el usuario actual, el valor devuelto por IS_SRVROLEMEMBER podría diferir de la última actualización de datos del autenticador (por ejemplo, Active Directory) en SQL Server.

Si se proporciona el parámetro de inicio de sesión opcional, el inicio de sesión de Windows que se consulta se debe encontrar en sys.server_principals o IS_SRVROLEMEMBER devolverá NULL. Esto indica que el inicio de sesión no es válido.

Cuando el parámetro de inicio de sesión es un inicio de sesión del dominio o está basado en un grupo de Windows y el controlador de dominio no es accesible, se producirá un error en las llamadas a IS_SRVROLEMEMBER y podrían devolverse datos incorrectos o incompletos.

Si el controlador de dominio no está disponible, la llamada a IS_SRVROLEMEMBER devolverá la información precisa cuando se puede autenticar el principio de Windows localmente, como una cuenta de Windows local o un inicio de sesión SQL Server.

IS_SRVROLEMEMBER devuelve siempre 0 cuando se utiliza un grupo de Windows como el argumento de inicio de sesión y este grupo de Windows es un miembro de otro grupo de Windows que, a su vez, es miembro del rol de servidor especificado.

El Control de cuentas de usuario (UAC) de Windows Vista y Windows Server 2008 también podría devolver resultados diferentes. Esto dependerá de si el usuario tuvo acceso al servidor como miembro de un grupo de Windows o como un usuario de SQL Server concreto.

Esta función evalúa la pertenencia al rol, no el permiso subyacente. Por ejemplo, el rol fijo de servidor sysadmin tiene el permiso CONTROL SERVER. Si el usuario tiene el permiso CONTROL SERVER pero no es miembro del rol, esta función informará correctamente de que el usuario no es miembro del rol sysadmin, aunque tenga los mismos permisos.

Funciones relacionadas

Para determinar si el usuario actual es miembro del grupo de Windows o del rol de base de datos de SQL Server especificados, utilice IS_MEMBER (Transact-SQL). Para determinar si un inicio de sesión SQL Server es miembro de un rol de base de datos, utilice IS_ROLEMEMBER (Transact-SQL).

Permisos

Requiere el permiso VIEW DEFINITION en el rol de servidor.

Ejemplos

En el siguiente ejemplo se indica si el inicio de sesión de SQL Server para el usuario actual es miembro del rol fijo de servidor 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.'

En el siguiente ejemplo se indica si el inicio de sesión de dominio Pat es miembro del rol fijo de servidor diskadmin.

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

Vea también

Referencia

IS_MEMBER (Transact-SQL)

Funciones de seguridad (Transact-SQL)