sql >> Database teknologi >  >> RDS >> Sqlserver

Tjek for mislykket e-mail i SQL Server (T-SQL)

Hvis du forsøger at sende mail med SQL Server, men den ikke bliver leveret, kan du prøve at tjekke sysmail_faileditems se.

Eksempel

Her er et eksempel på kontrol for mislykkede e-mails. Bemærk, at det skal køres på msdb database.

SELECT * FROM msdb.dbo.sysmail_faileditems;

Resultat (ved hjælp af lodret output):

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

Jeg brugte lodret output her, så du ikke behøver at rulle sidelæns for at se alle kolonner.

I dette tilfælde viser jeg en mislykket e-mail. Jeg havde faktisk to mislykkede e-mails, men jeg besluttede, at det var mere kortfattet kun at vise ét resultat.

I mit tilfælde havde jeg brugt den forkerte mailserver i koden, der sender mailen, og mails mislykkedes. Så snart jeg opdaterede koden til at bruge den korrekte mailserver, blev alle efterfølgende e-mails sendt med succes. Dette ændrer dog ikke på dem, der allerede havde fejlet, og derfor forbliver de i sysmail_faileditems se.

Du kan forespørge sysmail_unsentitems for at returnere en liste over ikke-sendte e-mails (dem, der endnu ikke er sendt, ikke nødvendigvis mislykkedes).

Du kan også forespørge sysmail_sentitems for at få alle sendte e-mails.

Du kan også forespørge sysmail_allitems for at få alle e-mails (sendte, ikke sendt, mislykkedes og forsøger igen).


  1. Brug SCOPE_IDENTITY() til at returnere den sidst indsatte identitetsværdi i samme omfang (SQL-server)

  2. MySQL - Sådan vælger du data efter strenglængde

  3. Træk mikrosekunder fra en Datetime-værdi i MariaDB

  4. MariaDB-strengfunktioner (fuld liste)