sp_addrolemember (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)
Adiciona um usuário de banco de dados, uma função de banco de dados, o logon do Windows ou um grupo do Windows em uma função de banco de dados no banco de dados atual.
Importante
Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. Em vez disso, use ALTER ROLE .
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_addrolemember
[ @rolename = ] N'rolename'
, [ @membername = ] N'membername'
[ ; ]
Observação
Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.
Argumentos
@rolename [ = ] N'nome da função'
O nome da função de banco de dados no banco de dados atual. @rolename é sysname, sem padrão.
@membername [ = ] N'membername'
A conta de segurança que está sendo adicionada à função. @membername é sysname, sem padrão. @membername pode ser um usuário de banco de dados, uma função de banco de dados, um logon do Windows ou um grupo do Windows.
Valores do código de retorno
0
(sucesso) ou 1
(falha).
Comentários
Um membro adicionado a uma função usando sp_addrolemember
herda as permissões da função. Se o novo membro for uma entidade de segurança no nível do Windows sem um usuário de banco de dados correspondente, um usuário de banco de dados será criado, mas poderá não ser totalmente mapeado para o logon. Sempre verifique se o logon existe e tem acesso ao banco de dados.
Uma função não pode se incluir como membro. Essas definições circulares não são válidas, mesmo quando a associação está indiretamente implícita em uma ou mais associações intermediárias.
sp_addrolemember
Não é possível adicionar uma função de banco de dados fixa, uma função de servidor fixa ou um DBO a uma função.
Use sp_addrolemember
apenas para adicionar um membro a uma função de banco de dados. Para adicionar um membro a uma função de servidor, use sp_addsrvrolemember.
Permissões
A adição de membros a funções de banco de dados flexíveis requer uma das seguintes permissões:
Associação na função de banco de dados fixa db_securityadmin ou db_owner .
Associação na função proprietária da função.
ALTER ANY ROLE
permissão ouALTER
permissão na função.
A adição de membros a funções de banco de dados fixas requer associação na db_owner função de banco de dados fixa.
Exemplos
R. Adicionar um login do Windows
O exemplo a seguir adiciona o logon Contoso\Mary5
do AdventureWorks2022
Windows ao banco de dados como usuário Mary5
. O usuário Mary5
então é adicionado à função Production
.
Como Contoso\Mary5
é conhecido como o usuário de banco de dados Mary5
no banco de dados AdventureWorks2022
, o nome de usuário Mary5
deve ser especificado. A instrução falha, a menos que exista um Contoso\Mary5
logon. Teste usando um logon de seu domínio.
USE AdventureWorks2022;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5];
GO
B. Adicionar um usuário de banco de dados
O exemplo a seguir adiciona o usuário de banco de dados Mary5
à função de banco de dados Production
no banco de dados atual.
EXEC sp_addrolemember 'Production', 'Mary5';
Exemplos: PDW (Analytics Platform System)
C. Adicionar um login do Windows
O exemplo a seguir adiciona o logon LoginMary
ao AdventureWorks2022
banco de dados como usuário UserMary
. O usuário UserMary
então é adicionado à função Production
.
Observação
Como o logon LoginMary
é conhecido como o usuário UserMary
do banco de dados no AdventureWorks2022
banco de dados, o nome UserMary
de usuário deve ser especificado. A instrução falhará a menos que um logon Mary5
exista. Logons e usuários geralmente têm o mesmo nome. Este exemplo usa nomes diferentes para diferenciar as ações que afetam o logon e o usuário.
-- Uses AdventureWorks2022
CREATE USER UserMary FOR LOGIN LoginMary;
GO
EXEC sp_addrolemember 'Production', 'UserMary'
D. Adicionar um usuário de banco de dados
O exemplo a seguir adiciona o usuário de banco de dados UserMary
à função de banco de dados Production
no banco de dados atual.
EXEC sp_addrolemember 'Production', 'UserMary'