Compartilhar via


sysmail_add_principalprofile_sp (Transact-SQL)

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

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

Na Instância Gerenciada SQL do Azure e no SQL Server 2022 (16.x), a entidade de banco de dados também pode mapear 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. Devem ser especificados @principal_id ou @principal_name . Uma @principal_id torna esse perfil um perfil público, concedendo acesso a todas as entidades de segurança 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. Devem ser especificados @principal_id ou @principal_name . Uma @principal_name torna esse perfil um perfil público, concedendo acesso a todas as entidades de segurança no banco de public dados.

@profile_id [ = ] profile_id

O ID do perfil da associação. @profile_id é int, com um padrão de NULL. Devem ser especificados @profile_id ou @profile_name .

@profile_name [ = ] 'profile_name'

O nome do perfil para a associação. @profile_name é sysname, sem padrão. Devem ser especificados @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 uma @principal_id ou 0 uma @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_dbmail.

Um usuário de banco de dados só pode ter um perfil padrão. Quando @is_default é 1 e o usuário já está associado a um ou mais perfis, o perfil especificado torna-se 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 nenhuma outra associação existe, 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 o perfil AdventureWorks Public Profile 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;