Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Renvoyer une liste des e-mails envoyés à partir de la messagerie de base de données SQL Server (T-SQL)

Si vous utilisez Database Mail dans SQL Server, vous pouvez utiliser le sysmail_sentitems view pour renvoyer une liste de tous les e-mails envoyés par Database Mail.

Exemple

Voici un exemple de retour de tous les e-mails envoyés. Notez que cela doit être fait sur le msdb base de données.

SELECT * FROM msdb.dbo.sysmail_sentitems;

Résultat (en utilisant la sortie verticale) :

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

J'ai utilisé la sortie verticale ici pour que vous n'ayez pas besoin de faire défiler latéralement pour voir toutes les colonnes.

J'affiche également uniquement la première ligne (même si deux lignes ont été renvoyées), pour rester concis.

Le voici à nouveau, sauf que cette fois je vais passer en sortie horizontale et afficher les deux lignes. De plus, je ne spécifierai que quelques colonnes.

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

Résultat (en utilisant la sortie verticale) :

+---------------+---------------+-------------------------+-------------------------+
| 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 |
+---------------+---------------+-------------------------+-------------------------+

Vous pouvez interroger sysmail_unsentitems pour renvoyer une liste des e-mails non envoyés (ceux qui n'ont pas encore été envoyés, pas nécessairement en échec).

Vous pouvez également interroger sysmail_faileditems pour obtenir tous les e-mails ayant échoué.

Vous pouvez également interroger sysmail_allitems pour obtenir tous les e-mails (envoyés, non envoyés, échoués et réessayés).