Partilhar via


IS_MEMBER (Transact-SQL)

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

Ícone de vínculo de tópico Convenções de sintaxe Transact-SQL

Sintaxe

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

Argumentos

  • ' group '
    É o nome do grupo do Windows que está sendo verificado; deve estar no formato Domain\Group. group é sysname.

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

Tipos de retorno

int

Comentários

IS_MEMBER retorna os seguintes valores.

Valor de retorno

Descrição

0

O usuário atual não é um membro do group ou da role.

1

O usuário atual é um membro do group ou da role.

NULL

O group ou a role não é válida. 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 do grupo do Windows não pode ser consultada por um logon do SQL Server ou 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.

Funções relacionadas

Para determinar se um outro logon do 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 é um 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

Referência

IS_SRVROLEMEMBER (Transact-SQL)

Exibições do catálogo de segurança (Transact-SQL)

Funções de segurança (Transact-SQL)

Conceitos

Entidades (Mecanismo de Banco de Dados)