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.
Se aplica a: SQL Server (SQL Server 2008 a versión actual), Windows Azure SQL Database (Versión inicial a versión actual). |
Convenciones de sintaxis de Transact-SQL
Sintaxis
IS_MEMBER ( { 'group' | 'role' } )
Argumentos
' group '
Se aplica a: SQL Server 2008 a SQL Server 2014.
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)