Wenn Sie versuchen, E-Mails mithilfe von Datenbank-E-Mail in SQL Server zu senden, der Versand jedoch fehlschlägt, können Sie das sysmail_event_log
überprüfen um zu sehen, warum es fehlgeschlagen ist.
Das sysmail_event_log
view gibt eine Zeile für jede vom Datenbank-E-Mail-System zurückgegebene Windows- oder SQL Server-Nachricht zurück. Mit „Nachricht“ meine ich nicht die eigentliche E-Mail-Nachricht. Ich meine eine Nachricht wie die Fehlermeldung, die erklärt, warum die E-Mail fehlgeschlagen ist.
Sie können auch sysmail_configure_sp
verwenden gespeicherte Prozedur, um zu bestimmen, welche Arten von Nachrichten protokolliert werden.
Beispiel
Hier ist ein Beispiel, um zu demonstrieren, wie man sysmail_event_log
verwendet um alle Nachrichten zurückzugeben.
SELECT * FROM msdb.dbo.sysmail_event_log;
Auf meinem System gibt dies zu viele Daten zurück, um sie hier anzuzeigen, aber hier soll noch einmal eine Nachricht angezeigt werden, die zurückgegeben wird.
SELECT *
FROM msdb.dbo.sysmail_event_log
WHERE log_id = 2;
Ergebnis (bei vertikaler Ausgabe):
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
Ich habe in diesem Beispiel eine vertikale Ausgabe verwendet, damit Sie nicht seitwärts scrollen müssen.
Überprüfen Sie Ihre Protokollierungsebene
Sie können den sysmail_help_configure_sp
verwenden gespeicherte Prozedur, um zu prüfen, welche Arten von Nachrichten protokolliert werden.
Beispiel:
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Ergebnis:
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 2 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+
In meinem Fall der LoggingLevel
ist 2
, was der Standardwert ist. Diese Einstellung protokolliert Fehler, Warnungen und Informationsmeldungen.
Ändern Sie Ihre Protokollierungsstufe
Sie können den sysmail_configure_sp
verwenden gespeicherte Prozedur, um Ihre Protokollebene zu ändern.
Insbesondere können Sie einen LoggingLevel
auswählen von 1
, 2
, oder 3
.
Diese protokollieren Folgendes:
- Nur Fehler.
- Fehler, Warnungen und Informationsmeldungen (Standard).
- Fehler, Warnungen, Informationsmeldungen, Erfolgsmeldungen und zusätzliche interne Meldungen.
Wenn Sie ein Problem beheben, möchten Sie möglicherweise Ihre Protokollebene vorübergehend auf 3 ändern.
Hier ist ein Beispiel für die Änderung der Protokollierungsebene auf 3
.
EXECUTE msdb.dbo.sysmail_configure_sp
'LoggingLevel', '3';
Nachdem ich das ausgeführt habe, kann ich mein LoggingLevel
überprüfen wieder mit dem sysmail_help_configure_sp
gespeicherte Prozedur.
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Ergebnis:
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 3 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+