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

Vérifier le courrier non envoyé dans SQL Server (T-SQL)

Lors de l'envoi d'e-mails depuis SQL Server, vous pouvez vérifier les e-mails non envoyés avec le sysmail_unsentitems vue.

Exemple

Voici un exemple de vérification du courrier non envoyé. Notez qu'il doit être exécuté sur le msdb base de données.

SELECT * FROM msdb.dbo.sysmail_unsentitems;

Résultat (en utilisant la sortie 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

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.

Dans ce cas, il y a un e-mail non envoyé. Il m'est arrivé d'exécuter cette requête immédiatement après avoir exécuté msdb.dbo.sp_send_dbmail pour envoyer ce courrier.

Il s'est avéré que l'e-mail a été envoyé immédiatement après avoir copié les résultats ci-dessus, et maintenant, lorsque j'exécute à nouveau cette requête, je n'obtiens aucun résultat (c'est-à-dire qu'il n'y a pas d'e-mails non envoyés).

SELECT * FROM msdb.dbo.sysmail_unsentitems;

Résultat :

(0 rows affected)

Cependant, ce n'est pas parce qu'il n'y a pas d'e-mails non envoyés qu'il n'y en a aucun qui a échoué.

Vous pouvez interroger sysmail_faileditems pour renvoyer une liste des e-mails ayant échoué.

Vous pouvez également interroger sysmail_sentitems pour obtenir tous les e-mails envoyés.

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