Partager via


Messagerie de base de données

S’applique à :SQL ServerAzure SQL Managed Instance

Database Mail est une solution d’entreprise qui permet l’envoi d’e-mails à partir du moteur de base de données SQL Server ou d’Azure SQL Managed Instance. Vos applications peuvent envoyer des messages électroniques aux utilisateurs au moyen de Database Mail et par le biais d’un serveur SMTP externe. Ces messages peuvent contenir les résultats d'une requête, voire des fichiers de n'importe quelle ressource de votre réseau.

Remarque

La messagerie de base de données est disponible dans le moteur de base de données SQL Server et Azure SQL Managed Instance, mais pas dans les pools élastiques et Azure SQL Database. Pour plus d’informations sur l’utilisation de Database Mail dans Azure SQL Managed Instance, consultez Automatiser des tâches de gestion à l’aide de travaux SQL Agent dans Azure SQL Managed Instance.

Avantages liés à l'utilisation de la messagerie de base de données

La messagerie de base de données est fiable, évolutive, sûre et facilement prise en charge.

Fiabilité

  • Database Mail utilise le protocole SMTP (Simple Mail Transfer Protocol) standard pour envoyer des mails. Vous pouvez utiliser Database Mail sans installer le client MAPI étendu sur l'ordinateur qui exécute SQL Server.

  • Isolement du processus. Pour minimiser l'impact sur SQL Server, le composant qui envoie les messages s'exécute en dehors de SQL Server, dans un processus séparé. SQL Server continuera à mettre ses messages dans la file d’attente en cas d’arrêt ou d’échec de ce processus externe. Ces messages en file d'attente seront envoyés une fois que le processus extérieur ou le serveur SMTP devient en ligne.

  • Comptes de basculement Un profil de messagerie de base de données vous permet de spécifier plusieurs serveurs SMTP. Si un serveur SMTP est indisponible, le courrier peut encore être envoyé vers un autre serveur SMTP.

  • Support de cluster La messagerie de base de données est compatible avec les clusters et est entièrement prise en charge sur un cluster.

Évolutivité

  • Distribution en arrière-plan : Database Mail assure la distribution en arrière-plan, c'est-à-dire asynchrone. Lorsque vous appelez sp_send_dbmail pour envoyer un message, Database Mail ajoute une demande dans une file d’attente Service Broker. La procédure stockée est immédiatement retournée. Le composant de messagerie externe reçoit la demande et transmet le courrier électronique.

  • Plusieurs profils : lDatabase Mail vous permet de créer plusieurs profils dans une même instance de SQL Server. Vous pouvez également choisir le profil que la messagerie de base de données utilise lorsque vous envoyez un message.

  • Plusieurs comptes : chaque profil peut contenir plusieurs comptes de secours. Vous pouvez configurer différents profils avec différents comptes afin de distribuer le courrier électronique vers plusieurs serveurs de messagerie.

  • Compatibilité 64 bits : Database Mail est entièrement compatible avec les installations 64 bits de SQL Server.

Sécurité

  • Désactivée par défaut : pour réduire la zone de surface de SQL Server, les procédures stockées de Database Mail sont désactivées par défaut.

    • Pour configurer Database Mail, vous devez être membre du rôle serveur fixe sysadmin .
  • Sécurité de la messagerie : pour envoyer la messagerie de base de données, vous devez être membre du rôle de base de données DatabaseMailUserRole dans la msdb base de données.

  • Sécurité du profil : la messagerie de base de données garantit la sécurité des profils de messagerie. Vous choisissez les utilisateurs ou les groupes de la base de données msdb qui ont accès à un profil de Database Mail. Vous pouvez autoriser cet accès soit à certains utilisateurs en particulier ou à tous les utilisateurs de msdb. Un profil privé limite l'accès à une liste d'utilisateurs. Un profil public autorise l'accès à tous les utilisateurs d'une base de données.

  • Administrateur de taille des pièces jointes : la messagerie de base de données limite la taille des fichiers joints (limite configurable). Vous pouvez modifier cette limite en utilisant la procédure stockée sysmail_configure_sp .

  • Extensions de fichiers interdites : la messagerie de base de données maintient une liste d'extensions de fichiers interdites. Les utilisateurs ne peuvent pas joindre de fichiers avec une extension qui apparaît dans la liste. Vous pouvez modifier cette liste en utilisant sysmail_configure_sp.

  • Database Mail s'exécute sous le compte de service du moteur SQL Server. Pour attacher un fichier provenant d'un dossier dans un message électronique, le compte du moteur SQL Server doit être autorisé à accéder au dossier dans lequel se trouve le fichier.

Supportabilité

  • Configuration intégrée : Database Mail maintient les informations des comptes de messagerie dans le moteur de base de données SQL Server. Il n’est pas nécessaire de gérer un profil de messagerie dans une application cliente externe. L'Assistant Configuration de la messagerie de base de données offre une interface pratique pour la configuration de la messagerie de base de données. Vous pouvez également créer et maintenir vos configurations Database Mail au moyen de Transact-SQL.

  • Journalisation. La messagerie de base de données journalise l’activité de messagerie vers SQL Server, le journal des événements de l’application Microsoft Windows et les tables de la msdb base de données.

  • Audit : Database Mail conserve des copies des messages et des pièces jointes envoyés dans la base de données msdb. Vous pouvez facilement contrôler l'utilisation de la messagerie et consulter les messages conservés.

  • Prise en charge du HTML : la messagerie de base de données vous permet d'envoyer des messages au format HTML.

Architecture de messagerie de base de données

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 de statut pour 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.

Diagramme montrant comment la base de données système msdb envoie des messages à un serveur de messagerie SMTP.

Présentation des composants de Database Mail

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

  • Composants de configuration et de sécurité

    Database Mail 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 Database Mail 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 messagerie pour la base de données

    L’exécutable de Database Mail 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 msdb base de données et le journal des événements de l’application Microsoft Windows.

Configurer SQL Agent pour utiliser la messagerie de base de données

Vous pouvez configurer l'Agent SQL Server de manière à ce qu'il utilise la messagerie de base de données. Cette opération est requise pour les notifications d'alertes et la notification automatique à l'achèvement d'un travail.

Avertissement

Les différentes étapes d'un travail peuvent également envoyer un message électronique sans qu'il soit nécessaire de configurer SQL Server Agent pour utiliser Database Mail. Par exemple, une étape de travail Transact-SQL peut utiliser Database Mail pour envoyer les résultats d'une requête à une liste de destinataires.

Vous pouvez configurer SQL Server Agent de manière à envoyer des messages électroniques à des opérateurs prédéfinis lorsque :

  • Une alerte est déclenchée. Les alertes peuvent être configurées pour l'envoi de notifications par courrier électronique d'événements spécifiques qui se produisent. Par exemple, les alertes peuvent être configurées pour avertir un opérateur d’un événement de base de données particulier ou d’une condition de système d’exploitation qui peut nécessiter une action immédiate. Pour plus d’informations sur la configuration des alertes, consultez Alertes.

  • Une tâche planifiée, telle qu'une sauvegarde de base de données ou un événement de réplication, réussit ou échoue. Par exemple, vous pouvez utiliser la messagerie de SQL Server Agent pour notifier à des opérateurs qu'une erreur s'est produite lors d'un traitement de fin de mois.

Pour commencer à configurer SQL Agent pour utiliser la messagerie de base de données, consultez Configurer la messagerie SQL Server Agent pour utiliser la messagerie de base de données.

Messagerie de base de données avec des groupes de disponibilité autonomes

Pour utiliser la messagerie de base de données avec des groupes de disponibilité contenus, vous devez vous connecter à l’instance et activer Database Mail XPs (option de configuration du serveur) à l’aide de la sp_configure procédure stockée système. Cette étape doit être effectuée sur tous les réplicas du groupe de disponibilité contenu.

  • Si vous tentez d’activer l’option sp_configure de messagerie de base de données quand vous êtes connecté à l’écouteur de groupe de disponibilité autonome, vous recevez l’erreur attendue : Changes to server configuration options are not permitted in the connection to Contained Availability Group. Change connection to SQL Server instance level and retry the operation. (Microsoft SQL Server, Error: 5874)

Après avoir activé l’option Database Mail XPs sur tous les réplicas, connectez-vous à l’écouteur du groupe de disponibilité autonome pour poursuivre la configuration de la messagerie de base de données, comme décrit dans Sélectionner la tâche de configuration. Cela garantit que les objets de messagerie de base de données existent dans le groupe de disponibilité autonome et restent synchronisés.

Prise en charge de TDS 8.0

SQL Server 2025 (17.x) a introduit la prise en charge de TDS 8.0 pour la messagerie de base de données. Le protocole TDS 8.0 offre une sécurité et un chiffrement améliorés pour les données transmises entre SQL Server et les applications clientes. Cela permet à Database Mail de fonctionner dans des environnements où le chiffrement TLS 1.3 et TDS 8.0 sont appliqués.

Résolution des problèmes

Pour résoudre les problèmes liés à Database Mail, visitez :

Étape suivante