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