Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Managed Instance
Cet article explique comment résoudre un problème où les messages électroniques de la messagerie de base de données sont correctement mis en file d’attente, mais les messages ne sont pas remis.
Diagnostiquer le problème
Le programme externe de messagerie de base de données journalise l’activité de messagerie dans la msdb
base de données.
Tout d’abord, pour vérifier que la messagerie de base de données est activée, utilisez les XPs de messagerie de base de données (option de configuration du serveur) de la procédure stockée du système
sp_configure
, comme dans l’exemple suivant :EXEC sp_configure 'show advanced', 1; RECONFIGURE; EXEC sp_configure; GO
Ensuite, exécutez l’instruction suivante dans la
msdb
base de données pour vérifier l’état de la file d’attente de courrier :EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'Mail';
Pour obtenir une explication détaillée des colonnes, consultez sysmail_help_queue_sp (Transact-SQL).
Vérifiez la vue
sysmail_event_log
pour l'activité. Cette vue doit contenir une entrée établissant que le programme externe de messagerie de base de données a été démarré. S’il n’y a pas d’entrée dans lasysmail_event_log
vue, consultez le symptôme Messages mis en file d’attente, Aucune entrée danssysmail_event_log
.S’il existe des erreurs dans la
sysmail_event_log
vue, résolvez l’erreur spécifique. Consultez lasysmail_allitems
vue pour connaître l’état des messages.
État de message = Non envoyé
Un état d’insent indique que le programme externe de messagerie de base de données n’a pas encore traité le message électronique.
Le programme externe de messagerie de base de données peut avoir été en retard dans le traitement des messages ; le taux auquel le programme externe traite les messages dépend des conditions réseau, du délai d’expiration des nouvelles tentatives, du volume de messages et de la capacité du serveur SMTP. Si le problème persiste, envisagez d'utiliser plusieurs profils pour distribuer les messages entre plusieurs serveurs SMTP. Passez en revue le chargement des e-mails envoyés à partir de SQL Server pour vérifier que les e-mails envoyés sont valides et prévus.
Vérifiez la date de modification la plus récente pour les messages remis. Si la dernière livraison réussie s’est produite il y a un certain temps, vérifiez la sysmail_event_log
vue pour vérifier que le programme externe a été démarré avec succès par Service Broker. Si la dernière tentative n’a pas démarré le programme externe, vérifiez que le Programme externe Database Mail se trouve dans le répertoire correct et que le compte de service pour SQL Server dispose de l’autorisation d’exécuter l’exécutable. Consultez le journal des événements de l’application Windows pour connaître les erreurs liées à la messagerie de base de données.
Remarque
Pour supprimer les anciens messages non envoyés, attendez que les messages non remis soient les messages les plus anciens dans la file d’attente, puis utilisez la procédure stockée système msdb.dbo.sysmail_delete_mailitems_sp les supprimer.
État de message = Nouvel tentative
Un état de nouvelle tentative indique que la messagerie de base de données a essayé de remettre le message au serveur SMTP, mais qu’elle n’a pas pu le faire. Ceci est généralement dû à une interruption du réseau, à une défaillance du serveur SMTP ou à une configuration incorrecte du compte de messagerie de base de données. Le message doit éventuellement réussir ou échouer et publier un message dans le journal des événements de l’application Windows.
État de message = Envoyé
Un état envoyé indique que le programme externe Database Mail a remis l’e-mail au serveur SMTP.
Si le message n'est pas arrivé à destination, le serveur SMTP a accepté le message de la messagerie de base de données, mais n'a pas pu le remettre au destinataire final. Vérifiez les journaux du serveur SMTP ou contactez l'administrateur du serveur SMTP. Vous pouvez aussi tester le serveur de messagerie SMTP au moyen d'un autre client tel qu'Outlook Express.
État de message = Échec
Un état Échec indique que le programme externe Database Mail n’a pas pu remettre le message au serveur SMTP.
Dans ce cas, la msdb.dbo.sysmail_event_log
vue système contient les informations détaillées du programme externe. Pour un exemple de requête qui joint sysmail_faileditems
et sysmail_event_log
pour récupérer des messages d'erreur détaillés, consultez Vérifier l’état des messages électroniques envoyés avec la messagerie de base de données. Les causes d'échec les plus courantes sont une adresse de destination incorrecte ou des problèmes de réseau qui empêchent le programme externe d'atteindre un ou plusieurs des comptes de basculement. Des problèmes sur le serveur SMTP peuvent également entraîner le rejet du courrier électronique. Avec l’Assistant Configuration de Database Mail, définissez le Niveau de journalisation sur Commentaires et envoyez un message de test pour rechercher le point d’échec.