Compartir a través de


IS_MEMBER (Transact-SQL)

Indica si el usuario actual es miembro del grupo de Microsoft Windows o de la función de la base de datos de SQL Server especificados.

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

Sintaxis

IS_MEMBER ( { 'group' | 'role' } )

Argumentos

  • 'group'
    Nombre del grupo de Windows que se está comprobando; su formato debe ser Dominio\Grupo. group es de tipo sysname.

  • 'role'
    Es el nombre de la función de SQL Server que se está comprobando; role es de tipo sysname y puede contener las funciones fijas de base de datos o funciones definidas por el usuario, pero no funciones de servidor.

Tipos de valor devueltos

int

Notas

IS_MEMBER devuelve los siguientes valores.

Valor devuelto

Descripción

0

El usuario actual no es miembro de los parámetros group ni role.

1

El usuario actual es miembro de los parámetros group o role.

NULL

group o role no es válido. Cuando se consulta en un inicio de sesión de SQL Server o en un inicio de sesión que usa una función de aplicación, devuelve NULL para un grupo de Windows.

IS_MEMBER determina la pertenencia al grupo de Windows examinando un token de acceso creado por Windows. El token de acceso no refleja los cambios en la pertenencia a grupos que se realizan después de que un usuario se conecte a una instancia de SQL Server. La pertenencia a un grupo de Windows no se puede consultar en un inicio de sesión de SQL Server ni en una función de aplicación de SQL Server.

Esta función evalúa la pertenencia a roles, no el permiso subyacente. Por ejemplo, la función fija de base de datos db_owner tiene el permiso CONTROL DATABASE. Si el usuario tiene el permiso CONTROL DATABASE pero no es miembro del rol, esta función notificará correctamente que el usuario no es miembro del rol db_owner, aunque el usuario tenga los mismos permisos.

Ejemplos

En el siguiente ejemplo se comprueba si el usuario actual es miembro de una función de la base de datos o de un grupo de dominio de 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