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

Tjek ikke-sendt e-mail i SQL Server (T-SQL)

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


  1. Standard rækkefølge for udvalgt forespørgsel i oracle

  2. Hvordan genskaber man en slettet tabel med Django Migrations?

  3. Amazon EC2, mysql afbryder start, fordi InnoDB:mmap (x bytes) mislykkedes; fejl nr 12

  4. Indre Sammenføjning af tre borde