Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Créer un profil public par défaut pour la messagerie de base de données dans SQL Server (T-SQL)

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 de sp_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;