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

Retornar uma lista de emails enviados do SQL Server Database Mail (T-SQL)


Se você usa o Database Mail no SQL Server, pode usar o sysmail_sentitems view para retornar uma lista de todos os emails que o Database Mail enviou.

Exemplo


Aqui está um exemplo de retorno de todos os e-mails enviados. Observe que isso precisa ser feito no msdb base de dados.
SELECT * FROM msdb.dbo.sysmail_sentitems;

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

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

Também estou exibindo apenas a primeira linha (mesmo que duas linhas tenham sido retornadas), para manter as coisas concisas.

Aqui está novamente, exceto que desta vez vou mudar para a saída horizontal e exibir as duas linhas. Além disso, especificarei apenas algumas colunas.
SELECT
    mailitem_id,
    sent_status,
    send_request_date
FROM msdb.dbo.sysmail_allitems;

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

Você pode consultar sysmail_unsentitems para retornar uma lista de e-mails não enviados (os que ainda não foram enviados, não necessariamente com falha).

Você também pode consultar sysmail_faileditems para obter todos os e-mails com falha.

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