Partilhar via


IS_MEMBER (Transact-SQL)

Aplica-se a:Banco de Dados SQL doAzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Banco de Dados SQL no Microsoft Fabric

Indica se o utilizador atual pertence ao grupo Microsoft Windows especificado, ao grupo Microsoft Entra ou à base de dados SQL Server.

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

Transact-SQL convenções de sintaxe

Observação

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

Sintaxe

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

Arguments

'grupo'
Aplica-se a: SQL Server 2008 (10.0.x) e versões posteriores

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

'Papel'
É o nome do papel SQL Server que está a ser verificado. O papel é sysname e pode incluir os papéis fixos da base de dados ou papéis definidos pelo utilizador, mas não papéis de servidor.

Tipos de devolução

int

Observações

IS_MEMBER devolve os seguintes valores.

Valor de retorno Description
0 O utilizador atual não é membro do grupo ou do cargo.
1 O utilizador atual é membro de um grupo ou função.
NULO Nem o grupo nem o papel são válidos. Quando consultado por um login SQL Server ou por um login usando um papel de aplicação, devolve NULL para um grupo Windows.

IS_MEMBER determina a pertença a um grupo do Windows examinando um token de acesso criado pelo Windows. O token de acesso não reflete alterações na pertença ao grupo que são feitas após um utilizador se ligar a uma instância do SQL Server. A pertença a um grupo Windows não pode ser consultada por um login SQL Server ou por um papel de aplicação SQL Server.

Para adicionar e remover membros de um papel de base de dados, use ALTER ROLE (Transact-SQL). Para adicionar e remover membros de um papel de servidor, use ALTERAR SERVER ROLE (Transact-SQL).

Esta função avalia a pertença à função, não a permissão subjacente. Por exemplo, o papel de base de dados fixo db_owner tem a permissão CONTROL DATABASE . Se o utilizador tiver a permissão CONTROLAR A BASE DE DADOS mas não for membro da função, esta função reporta corretamente que o utilizador não pertence à função db_owner , mesmo que o utilizador tenha as mesmas permissões.

Os membros do papel fixo de servidor sysadmin entram em todas as bases de dados como utilizadores dbo . Verificar a permissão do membro do sysadmin fixou o papel de servidor verifica as permissões para o DBO, não para o login original. Como o dbo não pode ser adicionado a um papel de base de dados e não existe nos grupos do Windows, o dbo devolve sempre 0 (ou NULL se o papel não existir).

Para determinar se outro login SQL Server pertence a uma função de base de dados, use IS_ROLEMEMBER (Transact-SQL). Para determinar se um login SQL Server pertence a um papel de servidor, use IS_SRVROLEMEMBER (Transact-SQL).

Examples

O exemplo seguinte verifica se o utilizador atual pertence a uma função de base de dados ou a um grupo de domínio 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  

Ver também

IS_SRVROLEMEMBER (Transact-SQL)
Principais (Motor de Base de Dados)
Vistas do catálogo de segurança (Transact-SQL)
Funções de segurança (Transact-SQL)