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

Corrigir “nome do perfil não é válido” ao enviar email do SQL Server


Se você tentar enviar e-mails do SQL Server, mas obtiver um “nome do perfil não é válido”, provavelmente é porque você não especificou um perfil válido para o @profile_name argumento.

Exemplo


Por exemplo, digamos que você esteja usando o seguinte código T-SQL para enviar um email de notificação ao administrador sempre que um trabalho do SQL Server Agent falhar:
EXEC msdb.dbo.sp_send_dbmail  
    @profile_name = 'DB Admin Profile',  
    @recipients = '[email protected]',  
    @body = 'Your favorite SQL Server Agent job just failed',  
    @subject = 'SQL Server Agent Job: FAILED';

Mas você recebe o seguinte erro:
Msg 14607, Level 16, State 1, Procedure msdb.dbo.sysmail_verify_profile_sp, Line 42
profile name is not valid

Este erro nos diz especificamente que o “nome do perfil não é válido”.

Para enviar emails com o Database Mail, você precisa especificar um perfil em vez de uma conta de usuário diretamente. Nesse caso, especifiquei um @profile_name de DB Admin Profile , mas esse perfil não existe na verdade.

Antes de enviar e-mails, o que preciso fazer é adicionar um usuário ao msdb banco de dados, crie uma conta de correio do banco de dados e, em seguida, crie um perfil e adicione a conta de correio do banco de dados a esse perfil. Em seguida, preciso adicionar o usuário ao perfil.

Tudo pronto, ficará mais ou menos assim:
-- Switch to the msdb database
USE msdb;

-- Create a user on the msdb database
CREATE USER Marge FOR LOGIN Marge;

-- Create a Database Mail account  
EXECUTE msdb.dbo.sysmail_add_account_sp  
    @account_name = 'DB Admin',  
    @description = 'Mail account for admin emails.',  
    @email_address = '[email protected]',  
    @replyto_address = '[email protected]',  
    @display_name = 'DB Automated Mailer',  
    @mailserver_name = 'smtp.example.com',
    @port = 25;  
  
-- Create a Database Mail profile  
EXECUTE msdb.dbo.sysmail_add_profile_sp  
    @profile_name = 'DB Admin Profile',  
    @description = 'Profile for admin emails.';  
  
-- Add the account to the profile  
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp  
    @profile_name = 'DB Admin Profile',  
    @account_name = 'DB Admin',  
    @sequence_number = 1;
  
-- Grant user access to the Database Mail profile
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'DB Admin Profile',
    @principal_name = 'Marge',
    @is_default = 1;

Obviamente, você precisará substituir os vários detalhes pelos seus. Isso também pressupõe que você especifique um servidor de correio que funcione.

Uma vez feito, você deve estar pronto para enviar e-mails.