sysmail_unsentitems (Transact-SQL)
Contient une ligne pour chaque message de la messagerie de base de données dont l'état est unsent ou retrying. Les messages dont l'état est 'unsent' ou 'retrying' se trouvent toujours dans la file d'attente des messages et peuvent être envoyés à tout moment. Les messages peuvent se trouver dans l'état unsent pour les raisons suivantes :
il s'agit d'un nouveau message et, bien qu'il ait été placé dans la file d'attente des messages, la messagerie de base de données est en train d'envoyer d'autres messages et n'a pas encore atteint ce message ;
le programme externe de messagerie de base de données n'est pas en cours d'exécution et aucun message n'est envoyé.
Les messages peuvent se trouver dans l'état retrying pour les raisons suivantes :
- La messagerie de base de données a essayé d'envoyer le message mais n'a pas réussi à contacter le serveur de messagerie SMTP. La messagerie de base de données va continuer à essayer d'envoyer le message en utilisant d'autres comptes de messagerie de base de données attribués au profil qui a envoyé le message. Si aucun compte ne peut envoyer le message, la messagerie de base de données attendra pendant le temps défini pour le paramètre Délai entre reprises de comptes, puis essaiera à nouveau d'envoyer le message. La messagerie de base de données utilise le paramètre Tentatives de reprises de comptes pour déterminer combien de fois elle doit essayer d'envoyer le message. Les messages restent dans l'état retrying tant que la messagerie de base de données essaie d'envoyer le message.
Utilisez cette vue lorsque vous voulez voir combien de messages se trouvent dans la file d'attente des messages et depuis combien de temps ils s'y trouvent. En principe, le nombre de messages unsent est peu élevé. Procédez à un test d'évaluation au cours d'opérations normales pour déterminer un nombre approprié de messages en file d'attente pour vos opérations.
Pour voir tous les messages traités par la messagerie de base de données, utilisez sysmail_allitems (Transact-SQL). Pour voir uniquement les messages qui ont échoué ('failed'), utilisez sysmail_faileditems (Transact-SQL). Pour voir uniquement les messages qui ont été envoyés ('sent'), utilisez sysmail_sentitems (Transact-SQL).
Nom de colonne |
Type de données |
Description |
---|---|---|
mailitem_id |
int |
Identificateur de l'élément de messagerie dans la file d'attente des messages. |
profile_id |
int |
Identificateur du profil utilisé pour envoyer le message. |
recipients |
varchar(max) |
Adresses de messagerie des destinataires du message. |
copy_recipients |
varchar(max) |
Adresses de messagerie des personnes qui reçoivent une copie du message. |
blind_copy_recipients |
varchar(max) |
Adresses de messagerie des personnes qui reçoivent une copie du message mais dont le nom n'apparaît pas dans l'en-tête du message. |
subject |
nvarchar(510) |
Ligne d'objet du message. |
body |
varchar(max) |
Corps du message. |
body_format |
varchar(20) |
Format du corps du message. Les valeurs possibles sont TEXT et HTML. |
importance |
varchar(6) |
Paramètre importance du message. |
sensitivity |
varchar(12) |
Paramètre sensitivity du message. |
file_attachments |
varchar(max) |
Liste des noms de fichiers joints au message électronique (délimitée par des points-virgules). |
attachment_encoding |
varchar(20) |
Type de pièce jointe. |
query |
varchar(max) |
Requête exécutée par le programme de messagerie. |
execute_query_database |
sysname |
Contexte de base de données dans lequel le programme de messagerie a exécuté la requête. |
attach_query_result_as_file |
bit |
Lorsque la valeur est 0, les résultats de la requête ont été inclus dans le corps du message électronique, après le contenu du corps. Lorsque la valeur est 1, les résultats ont été renvoyés sous forme de pièce jointe. |
query_result_header |
bit |
Lorsque la valeur est 1, cela signifie que les résultats de la requête contenaient des en-têtes de colonne. Lorsque la valeur est 0, cela signifie que les résultats de la requête ne contenaient pas d'en-têtes de colonne. |
query_result_width |
int |
Paramètre query_result_width du message. |
query_result_separator |
char(1) |
Caractère utilisé pour séparer les colonnes dans la sortie de la requête. |
exclude_query_output |
bit |
Paramètre exclude_query_output du message. Pour plus d'informations, consultez sp_send_dbmail (Transact-SQL). |
append_query_error |
bit |
Paramètre append_query_error du message. La valeur 0 indique que la messagerie de base de données ne doit pas envoyer le message électronique s'il existe une erreur dans la requête. |
send_request_date |
datetime |
Date et heure d'arrivée du message dans la file d'attente des messages. |
send_request_user |
sysname |
Utilisateur qui a envoyé le message. Il s'agit du contexte utilisateur de la procédure de la messagerie de base de données, et non du champ De : du message. |
sent_account_id |
int |
Identificateur du compte de messagerie de base de données utilisé pour envoyer le message. La valeur est toujours NULL pour cette vue. |
sent_status |
varchar(8) |
La valeur est unsent si la messagerie de base de données n'a pas essayé d'envoyer le message. La valeur est retrying si la messagerie de base de données n'a pas réussi à envoyer le message, mais qu'elle essaie à nouveau. |
sent_date |
datetime |
Date et heure de la dernière tentative d'envoi du message par la messagerie de base de données. La valeur est NULL si la messagerie de base de données n'a pas essayé d'envoyer le message. |
last_mod_date |
datetime |
Date et heure de la dernière modification de la ligne. |
last_mod_user |
sysname |
Dernier utilisateur qui a modifié la ligne. |
Notes
En cas de dépannage de la messagerie de base de données, cette vue peut vous aider à identifier la nature du problème en vous montrant le nombre de messages se trouvant en file d'attente et leur temps d'attente. Si aucun message n'est envoyé, soit le programme externe de messagerie de base de données n'est pas en cours d'exécution, soit un problème réseau empêche la messagerie de base de données de contacter les serveurs SMTP. Si une grande partie des messages non envoyés ont la même valeur de profile_id, il se peut qu'il y ait un problème avec le serveur SMTP. Pensez à ajouter des comptes supplémentaires au profil. Si les messages sont envoyés mais qu'ils restent trop longtemps dans la file d'attente, SQL Server nécessite peut-être des ressources plus importantes pour traiter le volume de messages dont vous avez besoin.
Autorisations
Accordées au rôle serveur fixe sysadmin et au rôle de base de données DatabaseMailUserRole. Lorsque cette vue est exécutée par un membre du rôle serveur fixe sysadmin, elle affiche tous les messages unsent ou retrying. Les autres utilisateurs voient uniquement les messages unsent ou retrying qu'ils ont envoyés.