sql >> Base de Datos >  >> RDS >> Sqlserver

Arreglar "el nombre del perfil no es válido" al enviar correo desde SQL Server

Si intenta enviar correo desde SQL Server, pero obtiene un "nombre de perfil no es válido", probablemente se deba a que no ha especificado un perfil válido para @profile_name argumento.

Ejemplo

Por ejemplo, supongamos que está utilizando el siguiente código T-SQL para enviar un correo electrónico de notificación al administrador cada vez que falla un trabajo del Agente SQL Server:

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';

Pero obtienes el siguiente error:

Msg 14607, Level 16, State 1, Procedure msdb.dbo.sysmail_verify_profile_sp, Line 42
profile name is not valid

Este error nos dice específicamente que el "nombre de perfil no es válido".

Para enviar correos electrónicos con el correo electrónico de la base de datos, debe especificar un perfil en lugar de una cuenta de usuario directamente. En este caso, especifiqué un @profile_name de DB Admin Profile , pero dicho perfil en realidad no existe.

Antes de poder enviar correo, lo que debo hacer es agregar un usuario a msdb base de datos, cree una cuenta de correo de base de datos, luego cree un perfil y agregue la cuenta de correo de base de datos a ese perfil. Luego necesito agregar el usuario al perfil.

En total, se verá así:

-- 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, deberá reemplazar los diversos detalles con los suyos. Esto también supone que especifica un servidor de correo que funciona.

Una vez hecho esto, debería estar listo para enviar el correo.