Si vous essayez d'envoyer un e-mail à l'aide de la messagerie de base de données dans SQL Server, mais que l'envoi échoue, vous pouvez vérifier le sysmail_event_log
vue pour voir pourquoi cela a échoué.
Le sysmail_event_log
view renvoie une ligne pour chaque message Windows ou SQL Server renvoyé par le système de messagerie de base de données. Par "message", je ne veux pas dire le message réel. Je veux dire un message tel que le message d'erreur qui explique pourquoi le courrier a échoué.
Vous pouvez également utiliser le sysmail_configure_sp
procédure stockée pour déterminer quels types de messages sont enregistrés.
Exemple
Voici un exemple pour montrer comment utiliser sysmail_event_log
pour renvoyer tous les messages.
SELECT * FROM msdb.dbo.sysmail_event_log;
Sur mon système, cela renvoie trop de données à afficher ici, mais ici, c'est à nouveau pour afficher un message qui est renvoyé.
SELECT *
FROM msdb.dbo.sysmail_event_log
WHERE log_id = 2;
Résultat (en utilisant la sortie verticale) :
log_id | 2 event_type | error log_date | 2020-08-24 02:40:53.317 description | The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 1 (2020-08-24T02:40:52). Exception Message: Could not connect to mail server. (No connection could be made because the target machine actively refused it 127.0.0.1:25).) process_id | 68 mailitem_id | 1 account_id | NULL last_mod_date | 2020-08-24 02:40:53.317 last_mod_user | sa
J'ai utilisé la sortie verticale dans cet exemple afin que vous n'ayez pas à faire défiler latéralement.
Vérifiez votre niveau de journalisation
Vous pouvez utiliser le sysmail_help_configure_sp
procédure stockée pour vérifier quels types de messages sont enregistrés.
Exemple :
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Résultat :
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 2 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+
Dans mon cas, le LoggingLevel
est 2
, qui est la valeur par défaut. Ce paramètre enregistre les erreurs, les avertissements et les messages d'information.
Modifier votre niveau de journalisation
Vous pouvez utiliser le sysmail_configure_sp
procédure stockée pour modifier votre niveau de journalisation.
Plus précisément, vous pouvez choisir un LoggingLevel
de 1
, 2
, ou 3
.
Ceux-ci enregistrent les éléments suivants :
- Erreurs uniquement.
- Erreurs, avertissements et messages d'information (par défaut).
- Erreurs, avertissements, messages d'information, messages de réussite et messages internes supplémentaires
Si vous résolvez un problème, vous souhaiterez peut-être modifier temporairement votre niveau de journalisation à 3.
Voici un exemple de modification du niveau de journalisation à 3
.
EXECUTE msdb.dbo.sysmail_configure_sp
'LoggingLevel', '3';
Après avoir exécuté cela, je peux vérifier mon LoggingLevel
à nouveau avec le sysmail_help_configure_sp
procédure stockée.
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Résultat :
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 3 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+