Compartir a través de


IS_MEMBER (Transact-SQL)

Indica si el usuario actual es miembro del grupo de Microsoft Windows o del rol de base de datos de SQL Server especificados.

Icono de vínculo a temas Convenciones 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 Domain\Group. group es de tipo sysname.

  • ' role '
    Es el nombre del rol de SQL Server que se está comprobando; role es de tipo sysname y puede contener los roles fijos de base de datos o los roles definidos por el usuario, pero no los roles de servidor.

Tipos de valor devuelto

int

Comentarios

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 un rol 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 un rol de aplicación de SQL Server.

Para agregar y quitar miembros de un rol de base de datos, utilice ALTER ROLE (Transact-SQL). Para agregar y quitar miembros de un rol de servidor, utilice ALTER SERVER ROLE (Transact-SQL).

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

Funciones relacionadas

Para determinar si otro inicio de sesión de SQL Server es miembro de un rol de base de datos, utilice IS_ROLEMEMBER (Transact-SQL). Para determinar si un inicio de sesión de SQL Server es miembro de un rol de servidor, utilice IS_SRVROLEMEMBER (Transact-SQL).

Ejemplos

En el siguiente ejemplo se comprueba si el usuario actual es miembro de un rol de 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

Vea también

Referencia

IS_SRVROLEMEMBER (Transact-SQL)

Vistas de catálogo de seguridad (Transact-SQL)

Funciones de seguridad (Transact-SQL)

Conceptos

Entidades de seguridad (motor de base de datos)