Når du sender e-mails fra SQL Server, kan du tjekke for uafsendt e-mail med sysmail_unsentitems
se.
Eksempel
Her er et eksempel på kontrol for usendte e-mails. Bemærk, at det skal køres på msdb
database.
SELECT * FROM msdb.dbo.sysmail_unsentitems;
Resultat (ved hjælp af lodret output):
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
Jeg brugte lodret output her, så du ikke behøver at rulle sidelæns for at se alle kolonner.
I dette tilfælde er der én usendt e-mail. Jeg kørte tilfældigvis denne forespørgsel umiddelbart efter at have udført msdb.dbo.sp_send_dbmail
at sende denne mail.
Det viste sig, at mailen blev sendt umiddelbart efter, at jeg kopierede ovenstående resultater, og nu når jeg kører den forespørgsel igen, får jeg nul resultater (dvs. der er ingen usendte e-mails).
SELECT * FROM msdb.dbo.sysmail_unsentitems;
Resultat:
(0 rows affected)
Men bare fordi der ikke er nogen usendte e-mails, betyder det ikke, at der ikke er nogen, der mislykkedes.
Du kan forespørge sysmail_faileditems
for at returnere en liste over mislykkede e-mails.
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).