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

Controlla la posta non inviata in SQL Server (T-SQL)

Quando invii e-mail da SQL Server, puoi controllare la posta non inviata con sysmail_unsentitems visualizza.

Esempio

Ecco un esempio di controllo della posta non inviata. Nota che deve essere eseguito su msdb banca dati.

SELECT * FROM msdb.dbo.sysmail_unsentitems;

Risultato (usando l'output verticale):

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

Ho usato l'output verticale qui in modo che non sia necessario scorrere lateralmente per vedere tutte le colonne.

In questo caso, c'è un'e-mail non inviata. Mi è capitato di eseguire questa query immediatamente dopo l'esecuzione di msdb.dbo.sp_send_dbmail per inviare questa mail.

Come si è scoperto, la posta è stata inviata immediatamente dopo aver copiato i risultati di cui sopra e ora quando eseguo di nuovo quella query, ottengo zero risultati (cioè non ci sono email non inviate).

SELECT * FROM msdb.dbo.sysmail_unsentitems;

Risultato:

(0 rows affected)

Tuttavia, solo perché non ci sono e-mail non inviate, non significa che non ce ne siano di fallite.

Puoi interrogare sysmail_faileditems per restituire un elenco di email non riuscite.

Puoi anche interrogare sysmail_sentitems per ricevere tutte le email inviate.

Puoi anche interrogare sysmail_allitems per ricevere tutte le email (inviate, non inviate, non riuscite e tentativi).