Compartir a través de


IS_SRVROLEMEMBER (Transact-SQL)

Indica si en el inicio de sesión de SQL Server el usuario es miembro de la función fija de servidor especificada.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • 'role'
    Es el nombre de la función de servidor que se va comprobar. role es de tipo sysname.

    Los valores válidos de role incluyen los siguientes:

    sysadmin

    • dbcreator

    • bulkadmin

    • diskadmin

    • processadmin

    • serveradmin

    • setupadmin

    • securityadmin

  • '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 estará basado en el contexto de ejecución actual.

Tipos de valores devueltos

int

Notas

IS_SRVROLEMEMBER devuelve estos valores.

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.

Esta función se utiliza para determinar si el usuario actual puede realizar una acción que necesite los permisos de la función de servidor.

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

Si el parámetro de inicio de sesión opcional no se proporciona y se trata de un inicio de sesión de dominio de Windows, puede ser un miembro de la función fija 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 funciones teniendo en 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 debe estar presente en sys.server_principals; de lo contrario, 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 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.

El Control de cuentas de usuario (UAC) de Windows Vista y Windows Server 2008 también podrían devolver resultados diferentes. Esto dependería de si el usuario tuvo acceso al servidor como miembro del grupo de Windows o como usuario específico de SQL Server. Para obtener más información sobre el Control de cuentas de usuario, vea Cómo conectarse a SQL Server desde Windows Vista.

Esta función evalúa la pertenencia a roles, no el permiso subyacente. Por ejemplo, la función fija 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 notificará correctamente que el usuario no es miembro del rol sysadmin, aunque el usuario tenga los mismos permisos.

Ejemplos

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