sysmail_unsentitems (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Contiene una fila para cada mensaje de Correo electrónico de base de datos con el estado sin enviar o reintentar. Los mensajes con el estado unsent o retrying siguen en la cola de correo y pueden ser enviados en cualquier momento. Los mensajes pueden tener el estado sin enviar por los siguientes motivos:

  • El mensaje es nuevo y, aunque se ha colocado en la cola de correo, el Correo electrónico de base de datos está ocupado con otros mensajes y aún no ha alcanzado éste.

  • El programa externo del Correo electrónico de base de datos no está en ejecución y no se envía ningún mensaje.

Los mensajes pueden tener el estado de reintento por los siguientes motivos:

  • El Correo electrónico de base de datos intentó enviar el mensaje, pero no se pudo contactar con el servidor de correo SMTP. El Correo electrónico de base de datos seguirá intentando enviar el mensaje con otras cuentas propias asignadas al perfil que envió el mensaje. Si ninguna cuenta puede enviar el correo, Correo electrónico de base de datos esperará el período de tiempo configurado para el parámetro Account Retry Delay y, a continuación, intentará enviar el mensaje de nuevo. Correo electrónico de base de datos usa el parámetro Account Retry Attempts para determinar cuántas veces se intenta enviar el mensaje. Los mensajes conservan el estado de reintento siempre que Correo electrónico de base de datos intente enviar el mensaje.

Utilice esta vista cuando desee ver cuántos mensajes hay en espera para ser enviados y cuánto tiempo llevan en la cola de correo. Normalmente, el número de mensajes sin enviar será bajo. Realice una prueba comparativa durante las operaciones normales para determinar un número razonable de mensajes en la cola para las operaciones.

Para ver todos los mensajes procesados por Correo electrónico de base de datos, use sysmail_allitems (Transact-SQL). Para ver solo los mensajes con el estado de error, use sysmail_faileditems (Transact-SQL). Para ver solo los mensajes enviados, use sysmail_sentitems (Transact-SQL).

Nombre de la columna Tipo de datos Descripción
mailitem_id int Identificador del elemento de correo en la cola de correo electrónico.
profile_id int Identificador del perfil usado para enviar el mensaje.
Destinatarios ntext Direcciones de correo electrónico de los destinatarios de mensajes.
copy_recipients ntext Direcciones de correo electrónico de los destinatarios que reciben copias del mensaje.
blind_copy_recipients ntext Direcciones de correo electrónico de los destinatarios que reciben copias del mensaje pero cuyos nombres no aparecen en el encabezado del mensaje.
subject nvarchar(510) Línea de asunto del mensaje.
body ntext el cuerpo del mensaje.
body_format varchar(20) Formato de cuerpo del mensaje. Los valores posibles son TEXT y HTML.
importance varchar(6) Parámetro de importancia del mensaje.
Sensibilidad varchar(12) Parámetro de confidencialidad del mensaje.
file_attachments ntext Lista delimitada por punto y coma de nombres de archivo adjuntos al mensaje de correo electrónico.
attachment_encoding varchar(20) Tipo de datos adjuntos.
consulta ntext Consulta ejecutada por el programa de correo.
execute_query_database sysname Contexto de base de datos en el cual el programa de correo ejecutó la consulta.
attach_query_result_as_file bit Si el valor es 0, los resultados de la consulta se incluyeron en el cuerpo del mensaje de correo electrónico, después del contenido del cuerpo. Si el valor es 1, los resultados se devolvieron como datos adjuntos.
query_result_header bit Si el valor es 1, los resultados de la consulta contenían encabezados de columna. Si el valor es 0, los resultados de la consulta no contenían encabezados de columna.
query_result_width int Parámetro query_result_width del mensaje.
query_result_separator char(1) Carácter utilizado para separar columnas en la salida de la consulta.
exclude_query_output bit Parámetro exclude_query_output del mensaje. Para obtener más información, consulte sp_send_dbmail (Transact-SQL).
append_query_error bit Parámetro append_query_error del mensaje. El valor 0 indica que el Correo electrónico de base de datos no debe enviar el mensaje de correo electrónico si hay un error en la consulta.
send_request_date datetime Fecha y hora en que se colocó el mensaje en la cola de correo electrónico.
send_request_user sysname Usuario que envió el mensaje. Este es el contexto de usuario del procedimiento de correo electrónico de base de datos, no el campo From del mensaje.
sent_account_id int Identificador de la cuenta del Correo electrónico de base de datos utilizada para enviar el mensaje. Siempre es NULL para esta vista.
sent_status varchar(8) Se anulará la sangría si Correo electrónico de base de datos no ha intentado enviar el correo. Volverá a intentarlo si Correo electrónico de base de datos no pudo enviar el mensaje, pero está intentando de nuevo.
sent_date datetime Fecha y hora en las que el Correo electrónico de base de datos intentó por última vez enviar el mensaje. Será NULL si el Correo electrónico de base de datos no ha intentado enviar el mensaje.
last_mod_date datetime Fecha y hora de la modificación más reciente de la fila.
last_mod_user sysname Usuario que realizó la modificación más reciente de la fila.

Comentarios

Al solucionar problemas del Correo electrónico de base de datos, puede que esta vista le ayude a identificar la naturaleza del problema, pues en ella se muestra el número de mensajes a la espera de ser enviados y el tiempo que llevan esperando. Si no se está enviando ningún mensaje, puede que el programa externo del Correo electrónico de base de datos no esté en ejecución o que un problema de red impida que el Correo electrónico de base de datos se ponga en contacto con los servidores SMTP. Si muchos de los mensajes no enviados tienen la misma profile_id, puede haber un problema con el servidor SMTP. Considere la posibilidad de agregar cuentas adicionales al perfil. Si se envían mensajes, pero los mensajes pasan demasiado tiempo en la cola, es posible que SQL Server necesite más recursos para procesar el volumen de mensajes que necesita.

Permisos

Se concede al rol fijo de servidor sysadmin y al rol de base de datos DatabaseMailUserRole . Cuando un miembro del rol fijo de servidor sysadmin ejecuta, esta vista muestra todos los mensajes sin enviar o reintentar . Todos los demás usuarios solo ven los mensajes sin enviar o reintentar que enviaron.