Problembehandlung bei Datenbank-E-Mail: E-Mail in der Warteschlange, nicht übermittelt
In diesem Thema wird beschrieben, wie die Problembehandlung ausgeführt wird, wenn E-Mail-Nachrichten erfolgreich in der Warteschlange angeordnet werden, aber nicht übermittelt werden.
Diagnostizieren des Problems
Das externe Programm Datenbank-E-Mail protokolliert E-Mail-Aktivitäten in der msdb-Datenbank.
Um zunächst zu bestätigen, dass Datenbank-E-Mail aktiviert ist, verwenden Sie Database Mail XPs (Option) der gespeicherten Systemprozedur sp_configure.
Führen Sie anschließend in der msdb-Datenbank die folgende Anweisung aus, um den Status der E-Mail-Warteschlange zu prüfen:
sysmail_help_queue_sp @queue_type = 'Mail' ;
Eine detaillierte Erläuterung zu den Spalten erhalten Sie unter sysmail_help_queue_sp (Transact-SQL) im Abschnitt "Resultset".
Überprüfen Sie, ob in der sysmail_event_log-Sicht Aktivitäten vorhanden sind. Die Sicht sollte einen Eintrag enthalten, der besagt, dass das externe Programm Datenbank-E-Mail gestartet wurde. Falls in der sysmail_event_log-Sicht kein Eintrag vorhanden ist, lesen Sie den Abschnitt zum Symptom E-Mail in der Warteschlange, keine Einträge in sysmail_event_log. Falls in der sysmail_event_log-Sicht Fehler vorhanden sind, führen Sie eine Problembehandlung des betreffenden Fehlers aus.
Falls in der sysmail_event_log-Sicht Einträge vorhanden sind, überprüfen Sie den Status der Meldungen in der sysmail_allitems-Sicht.
Meldungsstatus unsent
Der Status unsent zeigt an, dass das externe Programm Datenbank-E-Mail die E-Mail-Nachricht noch nicht verarbeitet hat. Das externe Programm Datenbank-E-Mail ist möglicherweise beim Verarbeiten von Nachrichten in den Rückstand geraten. Die Rate, mit der das externe Programm Nachrichten verarbeitet, hängt von Netzwerkbedingungen, dem Wiederholungstimeout, dem Nachrichtenumfang und der Kapazität des SMTP-Servers ab. Falls das Problem weiterhin besteht, sollten Sie eventuell mehrere Profile verwenden, um die Nachrichten auf mehrere SMTP-Server zu verteilen.
Überprüfen Sie das letzte Änderungsdatum auf erfolgreich übermittelte Nachrichten. Falls die letzte erfolgreiche Übermittlung vor einiger Zeit erfolgte, überprüfen Sie die sysmail_event_log-Sicht, um sicherzustellen, dass das externe Programm von Service Broker erfolgreich gestartet wurde. Falls das externe Programm beim letzten Versuch nicht gestartet werden konnte, stellen Sie sicher, dass sich Externes Datenbank-E-Mail-Programm im richtigen Verzeichnis befindet und dass das Dienstkonto für SQL Server die Berechtigung zum Ausführen der ausführbaren Datei besitzt.
Hinweis |
---|
Sie können alte, ungesendete Nachrichten löschen, indem Sie warten, bis die unzustellbaren Nachrichten als älteste Nachrichten in der Warteschlange enthalten sind. Anschließend können diese Nachrichten mithilfe von sysmail_delete_mailitems_sp gelöscht werden. |
Meldungsstatus retrying
Der Status retrying zeigt an, dass von Datenbank-E-Mail versucht wurde, die Nachricht an den SMTP-Server zu übermitteln, dass dies aber nicht möglich war. In der Regel liegt dies an einer Unterbrechung im Netzwerk, einem Fehler auf dem SMTP-Server oder einem falsch konfigurierten Datenbank-E-Mail-Konto. Die Nachricht sollte schließlich erfolgreich versendet werden oder fehlschlagen und eine Meldung im Ereignisprotokoll verursachen.
Meldungsstatus sent
Der Status sent zeigt an, dass das externe Programm Datenbank-E-Mail die E-Mail-Nachricht erfolgreich an den SMTP-Server übermittelt hat. Falls die Nachricht nicht am Ziel angekommen ist, wurde die Nachricht von Datenbank-E-Mail vom SMTP-Server angenommen, konnte aber nicht an den endgültigen Empfänger übermittelt werden. Überprüfen Sie die Protokolle des SMTP-Servers, oder wenden Sie sich an den Administrator des SMTP-Servers. Sie können den SMTP-Server auch testen, indem Sie einen anderen Client (z. B. Outlook Express) verwenden.
Meldungsstatus failed
Der Status failed zeigt an, dass das externe Programm Datenbank-E-Mail die Nachricht nicht an den SMTP-Server übermitteln konnte. In diesem Fall enthält die sysmail_event_log-Sicht ausführliche Informationen vom externen Programm. Eine Beispielabfrage, die sysmail_faileditems und sysmail_event_log verknüpft, um ausführliche Fehlermeldungen abzurufen, finden Sie unter Vorgehensweise: Prüfen des Status von mit Datenbank-E-Mail gesendeten E-Mail-Nachrichten (Transact-SQL). Die häufigsten Ursachen für einen Fehler sind eine falsche Zieladresse oder Netzwerkprobleme, die verhindern, dass das externe Programm eines der Failoverkonten erreicht. Probleme auf dem SMTP-Server können ebenfalls dazu führen, dass der Server E-Mail ablehnt. Ändern Sie mithilfe des Assistenten zum Konfigurieren von Datenbank-E-Mail die Protokollierungsstufe in Ausführlich, und senden Sie eine Test-E-Mail, um den Fehlerpunkt zu lokalisieren.