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

Überprüfen Sie nicht gesendete E-Mails in SQL Server (T-SQL)

Beim Senden von E-Mails von SQL Server können Sie mit sysmail_unsentitems nach nicht gesendeten E-Mails suchen ansehen.

Beispiel

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

SELECT * FROM msdb.dbo.sysmail_unsentitems;

Ergebnis (bei vertikaler Ausgabe):

mailitem_id                 | 4
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 04:11:19.300
send_request_user           | sa
sent_account_id             | NULL
sent_status                 | unsent
sent_date                   | NULL
last_mod_date               | 2020-08-24 04:11:19.300
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 gibt es eine nicht gesendete E-Mail. Ich habe diese Abfrage zufällig unmittelbar nach dem Ausführen von msdb.dbo.sp_send_dbmail ausgeführt um diese Mail zu versenden.

Wie sich herausstellte, wurde die E-Mail sofort gesendet, nachdem ich die obigen Ergebnisse kopiert hatte, und wenn ich diese Abfrage jetzt erneut ausführe, erhalte ich null Ergebnisse (d. h. es gibt keine nicht gesendeten E-Mails).

SELECT * FROM msdb.dbo.sysmail_unsentitems;

Ergebnis:

(0 rows affected)

Nur weil es keine ungesendeten E-Mails gibt, heißt das nicht, dass keine fehlgeschlagen sind.

Sie können sysmail_faileditems abfragen um eine Liste fehlgeschlagener E-Mails zurückzugeben.

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).