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.