sp_addrolemember (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

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'nomedafunção'

O nome da função de banco de dados no banco de dados atual. @rolename é sysname, sem padrão.

@membername [ = ] N'nome do membro'

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, função de banco de dados, logon do Windows ou 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 pode não estar 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. Tais definições circulares não são válidas, mesmo quando a associação é indiretamente implícita por 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.

sp_addrolemember Use 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 (Transact-SQL).

Permissões

Adicionar membros a funções de banco de dados flexíveis requer uma das seguintes permissões:

  • Associação à função de banco de dados db_securityadmin ou db_owner fixa.

  • Associação na função proprietária da função.

  • ALTER ANY ROLE permissão ou ALTER permissão na função.

Adicionar membros a funções de banco de dados fixas requer associação à função de banco de dados fixa db_owner .

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 login. 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. Logins e usuários geralmente têm o mesmo nome. Este exemplo usa nomes diferentes para diferenciar as ações que afetam o logon versus 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'