Lorsque vous utilisez le sp_send_dbmail
procédure stockée pour envoyer des e-mails dans SQL Server, vous devez généralement inclure le @profile_name
argument pour spécifier le profil à utiliser.
Cependant, si vous omettez cet argument, sp_send_dbmail
utilisera le profil privé par défaut de l'utilisateur actuel. Si l'utilisateur n'a pas de profil privé par défaut, sp_send_dbmail
utilisera le profil public par défaut pour le msdb
base de données.
Si aucun de ces éléments n'est configuré, vous obtiendrez l'erreur suivante :
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.
Si vous obtenez cette erreur, trois options s'offrent à vous :
- Spécifiez le profil à utiliser, en incluant le
@profile_name
argument lors de l'appel desp_send_dbmail
procédure. - Créer un profil privé par défaut pour l'utilisateur actuel.
- Créer un profil public pour le
msdb
base de données.
Cet article fournit un exemple de la troisième option :créer un profil public pour le msdb
base de données.
Exemple
Voici un exemple qui passe par le processus de création d'un profil de messagerie de base de données, de création d'un compte de messagerie de base de données, d'ajout du compte au profil, puis d'octroi d'un accès public à ce profil.
-- 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;
La dernière ligne est en fait la partie qui en fait le profil public par défaut.
En utilisant @is_default = 1
, je configure ce profil comme profil public par défaut. Si j'avais utilisé @is_default = 0
à la place, ce ne serait pas le profil public par défaut.
Pour rendre un profil public, spécifiez un @principal_id
de 0
ou un @principal_name
de public
. Un profil public est disponible pour tous les utilisateurs dans le msdb
base de données (bien que les utilisateurs doivent également être membres de DatabaseMailUserRole
pour exécuter sp_send_dbmail
).
Notez qu'il ne peut y avoir qu'un seul profil public par défaut.
Mettre à jour un profil existant
Si vous avez déjà un profil public, mais que ce n'est pas le profil public par défaut, vous pouvez utiliser sysmail_update_principalprofile_sp
pour changer cela.
Exemple :
EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
@profile_name = 'DB Public Profile',
@principal_name = 'public',
@is_default = 1;