Compartilhar 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ópicoConvençõ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 Domínio\Grupo. 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 valores a seguir.

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 do Windows examinando um token de acesso criado pelo Windows. O token de acesso não reflete alterações na associação do grupo feitas após a conexão de um usuário com uma instância do SQL Server. A associação ao grupo do Windows não pode ser consultada por um logon do SQL Server ou por uma função de aplicativo do SQL Server.

Essa função avalia uma 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 um usuário possuir a permissão CONTROL DATABASE, mas não for um membro da função, a função reportará corretamente que o usuário não é um membro da função db_owner, embora ele tenha as mesmas permissões.

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