Architecture de la messagerie de base de données

La messagerie de base de données est composée des composants principaux suivants :

  • Composants de configuration et de sécurité

    La messagerie de base de données stocke les informations de configuration et de sécurité dans la base de données msdb. Les objets de configuration et de sécurité créent les profils et les comptes utilisés par la messagerie de base de données.

  • Composants de messagerie

    La base de données msdb fait office de base de données hôte de messagerie qui contient les objets de messagerie que la base de données de messagerie utilise pour envoyer des messages électroniques. Ces objets incluent la procédure stockée sp_send_dbmail et les structures de données qui contiennent les informations concernant les messages.

  • Exécutable de la messagerie de base de données

    L'exécutable de la messagerie de base de données est un programme externe qui lit à partir d'une file d'attente dans la base de données msdb et qui envoie des messages à des serveurs de messagerie.

  • Composants de journalisation et d'audit

    La messagerie de base de données enregistre les informations de journalisation dans la base de données msdb et dans le journal des événements des applications Microsoft Windows.

Vous pouvez utiliser efficacement la messagerie de base de données sans pour autant posséder une connaissance approfondie de son architecture. Toutefois, si vous connaissez les composants qui constituent la messagerie de base de données et comprenez leur mode d'interaction, vous pourrez plus facilement concevoir vos applications et résoudre les problèmes susceptibles de survenir.

L'illustration ci-dessous montre une vue d'ensemble de l'architecture de la messagerie de base de données.

msdb envoie des messages à un serveur de messagerie SMTP

La messagerie de base de données est conçue selon une architecture de file d'attente qui fait appel aux technologies Service Broker. Lorsque les utilisateurs exécutent sp_send_dbmail, cette procédure stockée insère un élément dans la file d'attente de messagerie et crée un enregistrement contenant le message électronique. L'insertion de la nouvelle entrée dans la file d'attente de messagerie active le processus de messagerie de base de données externe (DatabaseMail.exe). Le processus externe lit les informations du message et envoie celui-ci aux serveurs de messagerie appropriés. Le processus externe insère un élément dans la file d'attente État pour obtenir le résultat de l'opération d'envoi. L'insertion de cette nouvelle entrée dans la file d'attente d'état active une procédure stockée interne qui met à jour l'état du message électronique. Outre qu'elle stocke le message électronique envoyé (ou non envoyé), la messagerie de base de données enregistre également toutes les pièces jointes dans des tables système. Les vues de la messagerie de base de données fournissent l'état des messages pour la résolution de problèmes, et les procédures stockées permettent d'administrer la file d'attente de la messagerie de base de données.

Seuls les membres du rôle DatabaseMailUserRole de la base de données msdb peuvent exécuter sp_send_dbmail.