Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Indica se um login do SQL Server pertence ao papel de servidor especificado.
Transact-SQL convenções de sintaxe
Sintaxe
IS_SRVROLEMEMBER ( 'role' [ , 'login' ] )
Arguments
'Papel'
É o nome do papel do servidor que está a ser verificado.
O papel é sysname.
Os valores válidos para o papel são os papéis de servidor definidos pelo utilizador, e os seguintes papéis fixos de servidor:
- sysadmin
- serveradmin
- dbcreator
- setupadmin
- bulkadmin
- securityadmin
- diskadmin
- público
- processadmin
'login'
É o nome do login do SQL Server para verificar.
login é sysname, com o padrão NULL. Se não for especificado um valor, o resultado baseia-se no contexto de execução atual. Se o parâmetro contiver a palavra NULL, devolve NULL.
Observação
Embora os logins do Microsoft Entra estejam em pré-visualização pública para Azure SQL Database e Azure Synapse, não é suportado o uso de um princípio Microsoft Entra para login .
Tipos de devolução
int
| Valor de retorno | Description |
|---|---|
| 0 |
O login não é um membro da função. No Azure SQL Database, esta instrução devolve sempre 0. |
| 1 | O login é um membro do ROLE. |
| NULO | Role ou login não são válidos, ou não tens permissão para ver a assinatura do Role. |
Observações
Use IS_SRVROLEMEMBER para determinar se o utilizador atual pode realizar uma ação que exija as permissões do papel do servidor.
Se um login do Windows, como Contoso\Mary5, for especificado para o login, IS_SRVROLEMEMBER retorna NULL, a menos que o login tenha sido concedido ou negado acesso direto ao SQL Server.
Se o parâmetro opcional de login não for fornecido e se o login for um domínio Windows, pode ser membro de um papel fixo de servidor através da pertença a um grupo Windows. Para resolver tais pertences indiretas, IS_SRVROLEMEMBER solicita informações de pertença a grupos Windows ao controlador de domínio. Se o controlador de domínio estiver inacessível ou não responder, IS_SRVROLEMEMBER devolve informação de pertença a função ao contabilizar apenas o utilizador e os seus grupos locais. Se o utilizador especificado não for o utilizador atual, o valor devolvido por IS_SRVROLEMEMBER pode diferir da última atualização de dados do autenticador (como o Active Directory) para o SQL Server.
Se for fornecido o parâmetro opcional de login, o login do Windows que está a ser consultado deve estar presente em sys.server_principals, caso contrário IS_SRVROLEMEMBER devolve NULL. Isto indica que o login não é válido.
Quando o parâmetro de login é um login de domínio ou baseado num grupo Windows e o controlador de domínio está inacessível, as chamadas para IS_SRVROLEMEMBER falham e podem devolver dados incorretos ou incompletos.
Se o controlador de domínio não estiver disponível, a chamada para IS_SRVROLEMEMBER retorna informação precisa quando o principal do Windows pode ser autenticado localmente, como uma conta local do Windows ou um login do SQL Server.
IS_SRVROLEMEMBER sempre devolve 0 quando um grupo Windows é usado como argumento de login, e este grupo Windows é membro de outro grupo Windows que, por sua vez, pertence ao papel de servidor especificado.
A definição de Controlo de Conta de Utilizador (UAC) também pode causar resultados diferentes. Isto dependeria se o utilizador acedeu ao servidor como membro do grupo Windows ou como um utilizador específico do SQL Server.
Esta função avalia a pertença à função, não a permissão subjacente. Por exemplo, o papel de servidor fixo de sysadmin tem a permissão CONTROL SERVER . Se o utilizador tiver a permissão CONTROL SERVER mas não for membro do papel, esta função irá reportar corretamente que o utilizador não pertence ao papel de sysadmin , mesmo que o utilizador tenha as mesmas permissões.
Funções relacionadas
Para determinar se o utilizador atual é membro do grupo Windows especificado, do grupo Microsoft Entra ou do papel de base de dados SQL Server, use IS_MEMBER (Transact-SQL). Para determinar se um login SQL Server pertence a uma função de base de dados, use IS_ROLEMEMBER (Transact-SQL).
Permissions
Requer permissão VER DEFINIÇÃO no papel de servidor.
Examples
O exemplo seguinte indica se o login do SQL Server para o utilizador atual pertence ao sysadmin papel fixo do servidor.
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.';
O exemplo seguinte indica se o Pat de login do domínio pertence ao papel de servidor fixo de administrador de discos .
SELECT IS_SRVROLEMEMBER('diskadmin', 'Contoso\Pat');
Ver também
IS_MEMBER (Transact-SQL)
Funções de segurança (Transact-SQL)