Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Verificar correio não enviado no SQL Server (T-SQL)


Ao enviar emails do SQL Server, você pode verificar qualquer email não enviado com o sysmail_unsentitems visualizar.

Exemplo


Aqui está um exemplo de verificação de e-mails não enviados. Observe que ele precisa ser executado no msdb base de dados.
SELECT * FROM msdb.dbo.sysmail_unsentitems;

Resultado (usando saída vertical):
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

Eu usei a saída vertical aqui para que você não precise rolar lateralmente para ver todas as colunas.

Nesse caso, há um e-mail não enviado. Eu executei esta consulta imediatamente após executar msdb.dbo.sp_send_dbmail para enviar este e-mail.

Como se viu, o e-mail foi enviado imediatamente depois que copiei os resultados acima e agora, quando executo essa consulta novamente, recebo zero resultados (ou seja, não há e-mails não enviados).
SELECT * FROM msdb.dbo.sysmail_unsentitems;

Resultado:
(0 rows affected)

No entanto, só porque não há e-mails não enviados, isso não significa que não haja nenhum que tenha falhado.

Você pode consultar sysmail_faileditems para retornar uma lista de e-mails com falha.

Você também pode consultar sysmail_sentitems para obter todos os e-mails enviados.

Você também pode consultar sysmail_allitems para obter todos os e-mails (enviados, não enviados, com falha e tentando novamente).