IS_MEMBER (Transact-SQL)IS_MEMBER (Transact-SQL)

SE APLICA A: síSQL Server (a partir de 2008) síAzure SQL Database síAzure SQL Data Warehouse síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Indica si el usuario actual es miembro del grupo de MicrosoftMicrosoft Windows o del rol de base de datos de SQL ServerSQL Server especificados.Indicates whether the current user is a member of the specified MicrosoftMicrosoft Windows group or SQL ServerSQL Server database role.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

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

ArgumentosArguments

' group '' group '
Se aplica a: SQL Server 2008SQL Server 2008 hasta SQL Server 2017SQL Server 2017Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017

Nombre del grupo de Windows que se está comprobando; su formato debe ser Dominio\Grupo.Is the name of the Windows group that is being checked; must be in the format Domain\Group. group es sysname.group is sysname.

' role '' role '
Es el nombre del rol SQL ServerSQL Server que se va comprobar.Is the name of the SQL ServerSQL Server role that is being checked. role es sysname y puede contener los roles fijos de base de datos o los roles definidos por el usuario, pero no los roles de servidor.role is sysname and can include the database fixed roles or user-defined roles, but not server roles.

Tipos devueltosReturn Types

intint

NotasRemarks

IS_MEMBER devuelve los siguientes valores.IS_MEMBER returns the following values.

Valor devueltoReturn value DescripciónDescription
00 El usuario actual no es miembro de group ni role.Current user is not a member of group or role.
11 El usuario actual es miembro de group o role.Current user is a member of group or role.
NULLNULL group o role no son válidos.Either group or role is not valid. Cuando se consulta en un inicio de sesión de SQL ServerSQL Server o en un inicio de sesión que usa un rol de aplicación, devuelve NULL para un grupo de Windows.When queried by a SQL ServerSQL Server login or a login using an application role, returns NULL for a Windows group.

IS_MEMBER determina la pertenencia al grupo de Windows examinando un token de acceso creado por Windows.IS_MEMBER determines Windows group membership by examining an access token that is created by 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 ServerSQL Server.The access token does not reflect changes in group membership that are made after a user connects to an instance of SQL ServerSQL Server. La pertenencia a un grupo de Windows no se puede consultar en un inicio de sesión de SQL ServerSQL Server ni en un rol de aplicación de SQL ServerSQL Server.Windows group membership cannot be queried by a SQL ServerSQL Server login or a SQL ServerSQL Server application role.

Para agregar y quitar miembros de un rol de base de datos, use ALTER ROLE (Transact-SQL).To add and remove members from a database role, use ALTER ROLE (Transact-SQL). Para agregar y quitar miembros de un rol de servidor, use ALTER SERVER ROLE (Transact-SQL).To add and remove members from a server role, use ALTER SERVER ROLE (Transact-SQL).

Esta función evalúa la pertenencia al rol, no el permiso subyacente.This function evaluates role membership, not the underlying permission. Por ejemplo, el rol fijo de base de datos db_owner tiene el permiso CONTROL DATABASE.For example, the db_owner fixed database role has the CONTROL DATABASE permission. 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.If the user has the CONTROL DATABASE permission but is not a member of the role, this function will correctly report that the user is not a member of the db_owner role, even though the user has the same permissions.

Los miembros del rol fijo de servidor sysadmin acceden a cada base de datos con el usuario dbo.Members of the sysadmin fixed server role enter every database as the dbo user. Al comprobar los permisos para el rol fijo de servidor sysadmin, se comprueban los permisos para dbo, en lugar del inicio de sesión original.Checking permission for member of the sysadmin fixed server role, checks permissions for dbo, not the original login. Como dbo no se puede agregar a un rol de base de datos y no existe en los grupos de Windows, dbo siempre devolverá 0 (o NULL si no existe el rol).Since dbo can't be added to a database role and doesn't exist in Windows groups, dbo will always return 0 (or NULL if the role doesn't exist).

Para determinar si otro inicio de sesión de SQL ServerSQL Server es miembro de un rol de base de datos, use IS_ROLEMEMBER (Transact-SQL).To determine whether another SQL ServerSQL Server login is a member of a database role, use IS_ROLEMEMBER (Transact-SQL). Para determinar si un inicio de sesión de SQL ServerSQL Server es miembro de un rol de servidor, use IS_SRVROLEMEMBER (Transact-SQL).To determine whether a SQL ServerSQL Server login is a member of a server role, use IS_SRVROLEMEMBER (Transact-SQL).

EjemplosExamples

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.The following example checks whether the current user is a member of a database role or a Windows domain group.

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

Consulte tambiénSee Also

IS_SRVROLEMEMBER (Transact-SQL) IS_SRVROLEMEMBER (Transact-SQL)
Entidades de seguridad (motor de base de datos) Principals (Database Engine)
Vistas de catálogo de seguridad (Transact-SQL) Security Catalog Views (Transact-SQL)
Funciones de seguridad (Transact-SQL)Security Functions (Transact-SQL)