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

Vérifier les e-mails ayant échoué dans SQL Server (T-SQL)

Si vous essayez d'envoyer du courrier avec SQL Server mais qu'il n'est pas livré, essayez de vérifier le sysmail_faileditems vue.

Exemple

Voici un exemple de vérification des e-mails ayant échoué. Notez qu'il doit être exécuté sur le msdb base de données.

SELECT * FROM msdb.dbo.sysmail_faileditems;

Résultat (en utilisant la sortie verticale) :

mailitem_id                 | 1
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 02:40:48.093
send_request_user           | sa
sent_account_id             | NULL
sent_status                 | failed
sent_date                   | 2020-08-24 02:41:53.000
last_mod_date               | 2020-08-24 02:41:53.290
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, je montre un e-mail ayant échoué. J'ai en fait reçu deux e-mails qui ont échoué, mais j'ai décidé qu'il était plus concis de n'afficher qu'un seul résultat.

Dans mon cas, j'avais utilisé le mauvais serveur de messagerie dans le code qui envoie l'e-mail, et les e-mails ont échoué. Dès que j'ai mis à jour le code pour utiliser le bon serveur de messagerie, tous les e-mails suivants ont été envoyés avec succès. Cependant, cela ne change pas ceux qui avaient déjà échoué, et donc, ils restent dans le sysmail_faileditems vue.

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 échoués).

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).