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:Banco de Dados SQL do
Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Banco de Dados SQL no Microsoft Fabric
Indica se um principal de base de dados especificado é membro do papel especificado na base de dados.
Transact-SQL convenções de sintaxe
Observação
O Microsoft Entra ID era conhecido anteriormente como Azure Ative Directory (Azure AD).
Sintaxe
IS_ROLEMEMBER ( 'role' [ , 'database_principal' ] )
Arguments
'Papel'
É o nome do papel na base de dados que está a ser verificado.
O papel é sysname.
'database_principal'
É o nome do utilizador da base de dados, função da base de dados ou função da aplicação a verificar.
database_principal é sysname, com o padrão NULL. Se não for especificado nenhum valor, o resultado baseia-se no contexto de execução atual. Se o parâmetro contiver a palavra NULL, devolverá NULL.
Tipos de devolução
int
| Valor de retorno | Description |
|---|---|
| 0 | database_principal não é um membro do papel. |
| 1 | database_principal é um membro do papel. |
| NULO | database_principal ou função não é válida, ou não tens permissão para ver a pertença à função. |
Observações
A função IS_ROLEMEMBER não é suportada para um administrador Microsoft Entra quando este é membro de um grupo Microsoft Entra. A função IS_ROLEMEMBER é suportada por utilizadores Microsoft Entra que sejam membros de um grupo Microsoft Entra, a menos que esse grupo seja o administrador Microsoft Entra.
Use IS_ROLEMEMBER para determinar se o utilizador atual pode realizar uma ação que exija as permissões do papel da base de dados.
Se database_principal for baseado num login do Windows, como Contoso\Mary5, IS_ROLEMEMBER devolve NULL, a menos que o database_principal tenha sido concedido ou negado acesso direto ao SQL Server.
Se o parâmetro opcional de database_principal não for fornecido e se o database_principal for baseado num login de domínio Windows, pode ser membro de uma função de base de dados através da pertença a um grupo Windows. Para resolver tais pertenças indiretas, IS_ROLEMEMBER 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_ROLEMEMBER devolve informação de pertença ao ter em conta apenas o utilizador e os seus grupos locais. Se o utilizador especificado não for o utilizador atual, o valor devolvido por IS_ROLEMEMBER 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 database_principal , o utilizador deve existir em sys.database_principals, ou IS_ROLEMEMBER devolve NULL.
Quando o parâmetro database_principal é baseado num login de domínio ou num grupo Windows e o controlador de domínio está inacessível, as chamadas para IS_ROLEMEMBER falham e podem devolver dados incorretos ou incompletos.
Se o controlador de domínio não estiver disponível, a chamada para IS_ROLEMEMBER devolve informação precisa quando o principal do Windows pode ser autenticado localmente, como uma conta local do Windows ou um login no SQL Server.
IS_ROLEMEMBER sempre devolve 0 quando um grupo Windows é usado como argumento principal da base de dados, e este grupo Windows é membro de outro grupo Windows que, por sua vez, pertence ao papel especificado na base de dados.
O Controlo de Conta de Utilizador (UAC) encontrado no Windows Vista e Windows Server 2008 também pode devolver 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 base de dados fixo db_owner tem a permissão CONTROL DATABASE . Se o utilizador tiver a permissão CONTROLAR BASE de DADOS mas não for membro da função, esta função irá reportar 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).
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 um papel de servidor, use IS_SRVROLEMEMBER (Transact-SQL).
Permissions
Requer permissão VER DEFINIÇÃO no papel de base de dados.
Examples
O exemplo seguinte indica se o utilizador atual é membro do db_datareader papel fixo na base de dados.
IF IS_ROLEMEMBER ('db_datareader') = 1
print 'Current user is a member of the db_datareader role'
ELSE IF IS_ROLEMEMBER ('db_datareader') = 0
print 'Current user is NOT a member of the db_datareader role'
ELSE IF IS_ROLEMEMBER ('db_datareader') IS NULL
print 'ERROR: The database role specified is not valid.';
Ver também
CRIAR PAPEL (Transact-SQL)
ALTER PAPEL (Transact-SQL)
PAPEL DE DESISTÊNCIA (Transact-SQL)
CRIAR PAPEL DE SERVIDOR (Transact-SQL)
ALTERAR O PAPEL DO SERVIDOR (Transact-SQL)
PAPEL DE SERVIDOR DE ABANDONO (Transact-SQL)
IS_MEMBER (Transact-SQL)
IS_SRVROLEMEMBER (Transact-SQL)
Funções de segurança (Transact-SQL)