Compartilhar via


sp_addrolemember (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure PDW (Sistema de Plataforma de Análise) do Azure Synapse Analytics

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

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 ou ALTER 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'