sysmail_unsentitems (Transact-SQL)
Se aplica a: SQL Server Azure SQL Managed Instance
Contiene una fila para cada mensaje 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 Retry Attempts de cuenta 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 con errores, 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 | varchar(max) | Direcciones de correo electrónico de los destinatarios de mensajes. |
copy_recipients | varchar(max) | Direcciones de correo electrónico de los destinatarios que reciben copias del mensaje. |
blind_copy_recipients | varchar(max) | 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. |
cuerpo | varchar(max) | 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 | varchar(max) | 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. |
query | varchar(max) | 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 sin enviar 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, SQL Server puede necesitar 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 lo ejecuta un miembro del rol fijo de servidor sysadmin , 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.