Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Criar um perfil público padrão para Database Mail no SQL Server (T-SQL)


Quando você usa o sp_send_dbmail procedimento armazenado para enviar emails no SQL Server, você normalmente incluiria o @profile_name argumento para especificar qual perfil usar.

No entanto, se você omitir este argumento, sp_send_dbmail usará o perfil privado padrão para o usuário atual. Se o usuário não tiver um perfil privado padrão, sp_send_dbmail usará o perfil público padrão para o msdb base de dados.

Se nenhum deles estiver configurado, você receberá o seguinte erro:
Msg 14636, Level 16, State 1, Procedure msdb.dbo.sp_send_dbmail, Line 112
No global profile is configured. Specify a profile name in the @profile_name parameter.

Se você está recebendo este erro, você basicamente tem três opções:
  • Especifique qual perfil usar, incluindo o @profile_name argumento ao chamar o sp_send_dbmail procedimento.
  • Crie um perfil privado padrão para o usuário atual.
  • Crie um perfil público para o msdb banco de dados.

Este artigo fornece um exemplo da terceira opção:crie um perfil público para o msdb base de dados.

Exemplo


Aqui está um exemplo que passa pelo processo de criação de um perfil do Database Mail, criando uma conta do Database Mail, adicionando a conta ao perfil e concedendo acesso público a esse perfil.
-- Create a Database Mail profile  
EXECUTE msdb.dbo.sysmail_add_profile_sp  
    @profile_name = 'DB Public Profile',  
    @description = 'Public Profile for emails.'; 

-- Create a Database Mail account  
EXECUTE msdb.dbo.sysmail_add_account_sp
    @account_id = 1,
    @account_name = 'DB Public',  
    @description = 'Public account for emails.',  
    @email_address = '[email protected]',  
    @replyto_address = '[email protected]',  
    @display_name = 'DB Public Mailer',  
    @mailserver_name = 'smtp.example',
    @port = 587;

-- Add the account to the profile  
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp  
    @profile_name = 'DB Public Profile',  
    @account_name = 'DB Public',  
    @sequence_number = 1;

-- Grant the public principal access to the profile
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'DB Public Profile',
    @principal_name = 'public',
    @is_default = 1;

A última linha é na verdade a parte que o torna o perfil público padrão.

Usando @is_default = 1 , estou configurando este perfil para ser o perfil público padrão. Se eu tivesse usado @is_default = 0 em vez disso, não seria o perfil público padrão.

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

Observe que só pode haver um perfil público padrão.

Atualizar um perfil existente


Se você já tem um perfil público, mas não é o perfil público padrão, você pode usar sysmail_update_principalprofile_sp para mudar isso.

Exemplo:
EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
    @profile_name = 'DB Public Profile',
    @principal_name = 'public',
    @is_default = 1;