Partilhar via


IS_MEMBER (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

Indica se o usuário atual é membro do grupo do Microsoft Windows, do grupo do Microsoft Entra ou da função de banco de dados do SQL Server especificado.

A função IS_MEMBER tem suporte para grupos do Microsoft Entra. O único caso em que IS_MEMBER não funciona é se o grupo for o administrador do Microsoft Entra para a instância SQL.

Convenções de sintaxe de Transact-SQL

Observação

O Microsoft Entra ID era conhecido como Azure Active Directory (Azure AD).

Sintaxe

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

Argumentos

' group '
Aplica-se a: SQL Server 2008 (10.0.x) e posterior

É o nome do grupo do Windows ou do Microsoft Entra que está sendo verificado. Um grupo do Windows deve estar no formato Grupo de Domínio\. group é sysname.

' role '
É o nome da função SQL Server de servidor que está sendo verificada. role é sysname e pode incluir funções fixas ou funções definidas pelo usuário do banco de dados, mas não funções de servidor.

Tipos de retorno

int

Comentários

IS_MEMBER retorna os seguintes valores.

Valor retornado Descrição
0 O usuário atual não é membro do grupo ou da função.
1 O usuário atual é membro do group ou role.
NULO O grupo ou a função não são válidos. Quando consultado por um logon do SQL Server ou um logon que usa uma função de aplicativo, retorna NULL para um grupo do Windows.

IS_MEMBER determina a associação do grupo Windows examinando um token de acesso que é criado pelo Windows. O token de acesso não reflete as alterações na associação de grupo feitas depois que um usuário se conecta a uma instância do SQL Server. A associação de grupo do Windows não pode ser consultada por um logon do SQL Server ou por uma função de aplicativo do SQL Server.

Para adicionar e remover membros de uma função de banco de dados, use ALTER ROLE (Transact-SQL). Para adicionar e remover membros de uma função de servidor, use ALTER SERVER ROLE (Transact-SQL).

Essa função avalia a associação de função, não a permissão subjacente. Por exemplo, a função de banco de dados fixa db_owner tem a permissão CONTROL DATABASE. Se o usuário tiver a permissão CONTROL DATABASE , mas não for membro da função, essa função relatará corretamente que o usuário não é membro da função db_owner , mesmo que o usuário tenha as mesmas permissões.

Membros da função fixa de servidor sysadmin entram em cada banco de dados como o usuário dbo. Verificar permissões de membro da função fixa de servidor sysadmin verifica as permissões para dbo, não o logon original. Como dbo não pode ser adicionado a uma função de banco de dados e não existe em grupos do Windows, dbo sempre retorna 0 (ou NULL se a função não existir).

Para determinar se outro logon em SQL Server é um membro de uma função de banco de dados, use IS_ROLEMEMBER (Transact-SQL). Para determinar se um logon do SQL Server é membro de uma função de servidor, use IS_SRVROLEMEMBER (Transact-SQL).

Exemplos

O exemplo a seguir verifica se o usuário atual é um membro de uma função de banco de dados ou de um grupo de domínio do 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  

Consulte Também

IS_SRVROLEMEMBER (Transact-SQL)
Entidades (Mecanismo de Banco de Dados)
Exibições do catálogo de segurança (Transact-SQL)
Funções de segurança (Transact-SQL)