Share via


IS_SRVROLEMEMBER (Transact-SQL)

Indica se um logon do SQL Server é membro da função de servidor fixa especificada.

Ícone de vínculo de tópicoConvenções de Sintaxe Transact-SQL

Sintaxe

IS_SRVROLEMEMBER ( 'role' [ ,'login' ] )

Argumentos

  • 'role'
    É o nome da função de servidor que está sendo verificada. role é sysname.

    Os valores válidos para role incluem os seguintes:

    sysadmin

    • dbcreator

    • bulkadmin

    • diskadmin

    • processadmin

    • serveradmin

    • setupadmin

    • securityadmin

  • 'login'
    É o nome do logon do SQL Server a ser verificado. login é sysname, com um padrão de NULL. Se nenhum valor estiver especificado, o resultado será baseado no contexto de execução atual.

Tipos de retorno

int

Comentários

IS_SRVROLEMEMBER retorna os valores a seguir.

Valor de retorno

Descrição

0

login não é um membro de role.

1

login é um membro de role.

NULL

role ou login não é válido.

Use esta função para determinar se o usuário atual pode executar uma ação que requer as permissões da função de servidor.

Se um logon do Windows, como Contoso\Mary5, estiver especificado para login, IS_SRVROLEMEMBER retornará NULL, a não ser que o logon tenha concedido ou negado acesso direto ao SQL Server.

Se o parâmetro de logon opcional não for fornecido e o logon for um logon do domínio do Windows, ele poderá ser um membro de função de servidor fixa através da associação em um grupo do Windows. Para resolver tais associações indiretas, IS_SRVROLEMEMBER solicita informações de associação a grupo do Windows ao controlador de domínio. Se o controlador de domínio não estiver acessível ou não responder, IS_SRVROLEMEMBER retornará informações de associação de função levando em conta somente o usuário e seus grupos locais. Se o usuário especificado não for o usuário atual, o valor retornado por IS_SRVROLEMEMBER poderá ser diferente da última atualização de dados do autenticador (como o Active Directory) para o SQL Server.

Se o parâmetro de logon opcional for fornecido, o logon de Windows que está sendo consultado deverá estar presente em sys.server_principals ou IS_SRVROLEMEMBER retornará NULL. Isso indica que o logon não é válido.

Quando o parâmetro de logon é um logon de domínio ou baseado em um grupo do Windows e o controlador de domínio não está acessível, as chamadas para IS_SRVROLEMEMBER falharão e poderão retornar dados incorretos ou incompletos.

Se o controlador de domínio não estiver disponível, a chamada para IS_SRVROLEMEMBER retornará informações precisas quando o princípio do Windows puder ser autenticado localmente, como uma conta do Windows local ou um logon do SQL Server.

O UAC (Controle de Conta de Usuário) localizado no Windows Vista e o Windows Server 2008 também podem retornar resultados diferentes. Isso dependeria do fato de usuário ter acessado o servidor como um membro de grupo do Windows ou como um usuário específico do SQL Server. Para obter mais informações sobre o Controle de Conta de Usuário, consulte Como se conectar ao SQL Server a partir do Windows Vista.

Essa função avalia uma associação de função, não a permissão subjacente. Por exemplo, a função de servidor fixa sysadmin tem a permissão CONTROL SERVER. Se um usuário possuir a permissão CONTROL SERVER, 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 sysadmin, embora ele tenha as mesmas permissões.

Exemplos

O exemplo a seguir indica se o logon do SQL Server para o usuário atual é um membro da função de servidor fixa sysadmin.

IF IS_SRVROLEMEMBER ('sysadmin') = 1
   print 'Current user''s login is a member of the sysadmin role'
ELSE IF IS_SRVROLEMEMBER ('sysadmin') = 0
   print 'Current user''s login is NOT a member of the sysadmin role'
ELSE IF IS_SRVROLEMEMBER ('sysadmin') IS NULL
   print 'ERROR: The server role specified is not valid.'