Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Auf fehlgeschlagene E-Mails in SQL Server (T-SQL) prüfen

Wenn Sie versuchen, E-Mails mit SQL Server zu senden, diese aber nicht zugestellt werden, versuchen Sie, die sysmail_faileditems zu überprüfen ansehen.

Beispiel

Hier ist ein Beispiel für die Überprüfung auf fehlgeschlagene E-Mails. Beachten Sie, dass es auf der msdb ausgeführt werden muss Datenbank.

SELECT * FROM msdb.dbo.sysmail_faileditems;

Ergebnis (bei vertikaler Ausgabe):

mailitem_id                 | 1
profile_id                  | 1
recipients                  | [email protected]
copy_recipients             | NULL
blind_copy_recipients       | NULL
subject                     | SQL Server Agent Job: FAILED
body                        | Your favorite SQL Server Agent job just failed
body_format                 | TEXT
importance                  | NORMAL
sensitivity                 | NORMAL
file_attachments            | NULL
attachment_encoding         | MIME
query                       | NULL
execute_query_database      | NULL
attach_query_result_as_file | 0
query_result_header         | 1
query_result_width          | 256
query_result_separator      |  
exclude_query_output        | 0
append_query_error          | 0
send_request_date           | 2020-08-24 02:40:48.093
send_request_user           | sa
sent_account_id             | NULL
sent_status                 | failed
sent_date                   | 2020-08-24 02:41:53.000
last_mod_date               | 2020-08-24 02:41:53.290
last_mod_user               | sa

Ich habe hier eine vertikale Ausgabe verwendet, damit Sie nicht seitwärts scrollen müssen, um alle Spalten zu sehen.

In diesem Fall zeige ich eine fehlgeschlagene E-Mail an. Ich hatte tatsächlich zwei fehlgeschlagene E-Mails, aber ich entschied, dass es prägnanter wäre, nur ein Ergebnis anzuzeigen.

In meinem Fall hatte ich den falschen Mailserver im Code verwendet, der die E-Mail sendet, und die E-Mails schlugen fehl. Sobald ich den Code aktualisiert habe, um den richtigen Mailserver zu verwenden, wurden alle nachfolgenden E-Mails erfolgreich gesendet. Dies ändert jedoch nicht diejenigen, die bereits fehlgeschlagen sind, und verbleiben daher in den sysmail_faileditems ansehen.

Sie können sysmail_unsentitems abfragen um eine Liste nicht gesendeter E-Mails zurückzugeben (solche, die noch gesendet werden müssen, nicht unbedingt fehlgeschlagen sind).

Sie können auch sysmail_sentitems abfragen um alle gesendeten E-Mails zu erhalten.

Sie können auch sysmail_allitems abfragen um alle E-Mails zu erhalten (gesendet, ungesendet, fehlgeschlagen und Wiederholung).