Si vous essayez d'envoyer du courrier à partir de SQL Server, mais que vous obtenez un "nom de profil non valide", c'est probablement parce que vous n'avez pas spécifié de profil valide pour le @profile_name
arguments.
Exemple
Par exemple, supposons que vous utilisiez le code T-SQL suivant pour envoyer un e-mail de notification à l'administrateur chaque fois qu'une tâche de l'Agent SQL Server échoue :
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';
Mais vous obtenez l'erreur suivante :
Msg 14607, Level 16, State 1, Procedure msdb.dbo.sysmail_verify_profile_sp, Line 42 profile name is not valid
Cette erreur nous indique précisément que "le nom du profil n'est pas valide".
Pour envoyer un e-mail avec Database Mail, vous devez spécifier directement un profil au lieu d'un compte d'utilisateur. Dans ce cas, j'ai spécifié un @profile_name
de DB Admin Profile
, mais un tel profil n'existe pas réellement.
Avant de pouvoir envoyer du courrier, ce que je dois faire est d'ajouter un utilisateur au msdb
base de données, créez un compte de messagerie de base de données, puis créez un profil et ajoutez le compte de messagerie de base de données à ce profil. Je dois ensuite ajouter l'utilisateur au profil.
Dans l'ensemble, cela ressemblera à ceci :
-- 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;
Évidemment, vous devrez remplacer les différents détails par les vôtres. Cela suppose également que vous spécifiez un serveur de messagerie qui fonctionne.
Une fois cela fait, vous devriez être prêt à envoyer du courrier.