GERBELOTBARILLON.COM

Parce qu'il faut toujours un commencement...

SQL Serveur

Envoi de mails par SQL Serveur

Depuis la version SQL 2005, il n'est plus requis d'utiliser un client Outlook ou Exchange pour permettre à SQL Serveur d'envoyer des emails. Cet outil est le Database Mail.

Il y a, comme toujours avec SQL Serveur, deux méthodes pour mettre en place le Database Mail :

Prérequis à Database Mail

Configurer le service de mail

  1. Développez le noeud Gestion
  2. Cliquez sur l'élément DatabaseMail avec le bouton droit puis cliquez sur l'option de menu Configurer Database Mail

Il y a 4 options disponibles pour la configuration de ces options :

  1. Configurer Database Mail en effectuant les tâches suivantes
    En sélectionnant cette option, vous serez amené à faire les 3 étapes en suivant. Les autres choix permettent de cibler les options plus précisément, lorsqu'une configuration existe déjà.
  2. Gérer les comptes et les profils Database Mail
    Permet de créer de nouveaux comptes et profils de messagerie ou de modifier les éléments existants.
  3. Gérer la sécurité des profils
    Configuration des utilisateurs ayant les accès aux profils de messagerie de bases de données.
  4. Afficher ou modifier les paramètres du système
    Configuration des paramètres système de la messagerie comme par exemple la taille maximale des fichiers de pièces jointes.
Laissez le choix par défaut sélectionné et faites suivant. Cela affiche la fenêtre de création d'un profil de messagerie, dans lequel nous pourrons enregistrer autant de comptes d'envoi que désiré, sachant que par défaut un seul est actif.

Si vous cliquez sur le bouton Ajouter... vous êtes amené à une nouvelle feuille de saisie d'informations :

Lorsque cette étape est terminée, vous pouvez vérifier votre configuration de compte SMTP. Sur la fenêtre suivante, vous allez pouvoir gérer la sécurité des profils. Il est plus simple de configurer le profil comme profil public et spécifiez qu'il doit être le compte par défaut. Enfin, l'étape de gestion de la configuration de la messagerie s'affiche pour vous permettre de changer le comportement du gestionnaire pour, par exemple, interdire des extensions de fichiers ou la taille maximale du fichier joint. Laissez les options par défaut pour simplifier la configuration. Vous aurez le temps de changer lorsque vous arriverez à envoyer et recevoir des mails... En faisant ensuite Terminer vous obtiendrez un rapport de la configuration qui va être appliquée, ainsi que la liste des étapes appliquées.

Le point parfois compliqué est de trouver un service de messagerie qui accepte vos paramètres de configuration avec Database Mail. Si vous avez de la double authentification pour l'envoi, cela va poser des problèmes. Si vous avez un système requérant un port 465, testez avec le port 587. Si vous utilisez gmail...n'utilisez pas gmail en production...

Test d'envoi de message

Vous pouvez forcer la validation du système de messagerie en ouvrant SSMS (SQL Server Management Studio) et en déroulant l'élément Gestion. Faites un clic-droit sur Database Mail et faites Envoyer un message électronique de test. Remplissez les champs de la fenêtre suivante avec le profil de messagerie précédemment configuré et le mail de destination. Vous pouvez préciser un objet et un texte qui sera envoyé. Une fenêtre d'information vous indique que le mail a normalement été envoyé. Si vous ne recevez rien, c'est là que les problèmes peuvent survenir. Rechercher une raison pour laquelle un email ne peut pas être envoyé est souvent une galère avec les journaux de SQL. Rien n'est moins précis qu'un message d'erreur made in Microsoft.

Activation du système de messagerie

Décider d'envoyer des emails c'est bien mais pouvoir le faire requiert que l'Agent SQL soit autorisé pour cette action. Faites un clic-droit sur l'élément Agent SQL et prenez ses propriétés. Dans la feuille de configuration de l'agent SQL, sélectionnez Système d'alerte. Activez le système de messagerie ainsi que le profil devant être utilisé.

Opérateurs de l'Agent SQL

SQL Serveur définit des agents comme étant des personnes physiques (ou presque) étant destinatrices des messages d'information ou d'alerte suite à l'exécution de jobs SQL, par mail, radiomessage, et en fonction d'horaires précisés. Je trouve que pour les horaires, Microsoft pourrait faire des efforts pour améliorer leur définition car seuls les jours du week-end peuvent disposer d'heures spécifiques. Sinon pour les jours de semaine, vou pouvez être embêtés par des mails à toute heure...

Pour créer un opérateur, depuis SSMS, déroulez SQL Agent et faites un clic droit sur l'élément Opérateurs. Sélectionnez Nouvel opérateur... pour obtenir la fenêtre suivante.

Ces opérateurs seront affectés comme destinataires de notifications durant les jobs SQL Agent. En prenant l'élément Notifications de la fenêtre de l'opérateur, vous remarquez une liste avec l'ensemble des jobs auxquels est affecté l'opérateur. Vous pouvez ainsi vérifier si tous les jobs critiques sont soumis à notification. .

Notifications sur un job

Si vous déroulez la partie Travaux de l'Agent SQL, en prenant les propriétés d'un travail, vous pouvez définir les notifications . Il n'y a qu'à choisir l'opérateur destinataire du message d'alerte et sur quel événement la notification est envoyée. Vous pouvez également préciser si la notification doit être inscrite ou non dans la journal Windows, ce que je vous conseille.