Compartilhar via


sysmail_add_principalprofile_sp (Transact-SQL)

Aplica-se a: Instância Gerenciada de SQL do Azure do SQL Server

Concede permissão para uma msdb entidade de banco de dados usar um perfil do Database Mail. A entidade de segurança do banco de dados deve ser mapeada para um usuário de autenticação do SQL Server, um usuário do Windows ou um grupo do Windows.

Na Instância Gerenciada de SQL do Azure e no SQL Server 2022 (16.x), a entidade de banco de dados também pode ser mapeada para um usuário do Microsoft Entra.

Convenções de sintaxe de Transact-SQL

Sintaxe

sysmail_add_principalprofile_sp
    { [ @principal_id = ] principal_id | [ @principal_name = ] 'principal_name' }
    , { [ @profile_id = ] profile_id | [ @profile_name = ] 'profile_name' }
    [ , [ @is_default ] = 'is_default' ]
[ ; ]

Argumentos

[ @principal_id = ] principal_id

A ID do usuário ou função do banco de dados no msdb banco de dados para a associação. @principal_id é int, com um padrão de NULL. Deve ser especificado @principal_id ou @principal_name . Uma @principal_id torna esse perfil um perfil público, concedendo acesso a todas as entidades principais no banco de 0 dados.

@principal_name [ = ] 'principal_name'

O nome do usuário ou função do banco de dados no msdb banco de dados para a associação. @principal_name é sysname, com um padrão de NULL. Deve ser especificado @principal_id ou @principal_name . Uma @principal_name de public torna esse perfil um perfil público, concedendo acesso a todas as entidades principais no banco de dados.

@profile_id [ = ] profile_id

A ID do perfil da associação. @profile_id é int, com um padrão de NULL. Deve ser especificado @profile_id ou @profile_name .

@profile_name [ = ] 'profile_name'

O nome do perfil para a associação. @profile_name é sysname, sem padrão. Deve ser especificado @profile_id ou @profile_name .

@is_default [ = ] is_default

Especifica se esse perfil é o perfil padrão para o principal. Uma entidade de segurança deve ter exatamente um perfil padrão. @is_default é bit, sem padrão.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

Para tornar um perfil público, especifique um @principal_id ou 0 um @principal_name de public. Um perfil público está disponível para todos os usuários no banco de dados, embora os msdb usuários também devam ser membros de DatabaseMailUserRole para executar sp_send_dbmailo .

Um usuário de banco de dados só pode ter um perfil padrão. Quando @is_default está 1 e o usuário já está associado a um ou mais perfis, o perfil especificado se torna o perfil padrão para o usuário. O perfil que anteriormente era o padrão permanecerá associado ao usuário, mas deixará de ser o perfil padrão.

Quando @is_default é 0 e não existe outra associação, o procedimento armazenado retorna um erro.

O procedimento sysmail_add_principalprofile_sp armazenado está no msdb banco de dados e pertence ao dbo esquema. O procedimento deve ser executado com um nome de três partes se o banco de dados atual não msdbfor .

Permissões

Esse procedimento armazenado pertence à função db_owner . Você pode conceder EXECUTE permissões para qualquer usuário, mas essas permissões podem ser substituídas durante uma atualização do SQL Server.

Exemplos

R. Criar uma associação e definir o perfil padrão

O exemplo a seguir cria uma associação entre o perfil nomeado AdventureWorks Administrator Profile e o usuário ApplicationUserdo msdb banco de dados. O perfil é o perfil padrão para o usuário.

EXEC msdb.dbo.sysmail_add_principalprofile_sp
    @principal_name = 'ApplicationUser',
    @profile_name = 'AdventureWorks Administrator Profile',
    @is_default = 1;

B. Tornar um perfil o perfil público padrão

O exemplo a seguir torna o perfil AdventureWorks Public Profile o perfil público padrão para usuários no msdb banco de dados.

EXEC msdb.dbo.sysmail_add_principalprofile_sp
    @principal_name = 'public',
    @profile_name = 'AdventureWorks Public Profile',
    @is_default = 1;