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

Returner en liste over e-mails sendt fra SQL Server Database Mail (T-SQL)

Hvis du bruger Database Mail i SQL Server, kan du bruge sysmail_sentitems view for at returnere en liste over alle e-mails, som Database Mail har sendt.

Eksempel

Her er et eksempel på returnering af alle sendte e-mails. Bemærk, at dette skal gøres på msdb database.

SELECT * FROM msdb.dbo.sysmail_sentitems;

Resultat (ved hjælp af lodret output):

mailitem_id                 | 3
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 03:58:57.887
send_request_user           | sa
sent_account_id             | 1
sent_status                 | sent
sent_date                   | 2020-08-24 03:59:01.000
last_mod_date               | 2020-08-24 03:59:01.543
last_mod_user               | sa

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

Jeg viser også kun den første række (selvom to rækker blev returneret), for at holde tingene kortfattet.

Her er det igen, bortset fra at denne gang skifter jeg til vandret output og viser begge rækker. Jeg vil også kun angive nogle få kolonner.

SELECT
    mailitem_id,
    sent_status,
    send_request_date
FROM msdb.dbo.sysmail_allitems;

Resultat (ved hjælp af lodret output):

+---------------+---------------+-------------------------+-------------------------+
| mailitem_id   | sent_status   | send_request_date       | sent_date               |
|---------------+---------------+-------------------------+-------------------------|
| 3             | sent          | 2020-08-24 03:58:57.887 | 2020-08-24 03:59:01.000 |
| 4             | sent          | 2020-08-24 04:11:19.300 | 2020-08-24 04:11:22.000 |
+---------------+---------------+-------------------------+-------------------------+

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_faileditems for at få alle mislykkede e-mails.

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


  1. TIME() Eksempler – MySQL

  2. Hvordan tømmer jeg PRINT-bufferen i TSQL?

  3. INDSÆT ... PÅ DUBLIKAT NØGLOPDATERING med HVOR?

  4. Sådan får du første række pr. gruppe i PostgreSQL