sql >> Base de Datos >  >> RDS >> Sqlserver

Verifique el correo no enviado en SQL Server (T-SQL)

Al enviar correos electrónicos desde SQL Server, puede verificar si hay correo no enviado con sysmail_unsentitems ver.

Ejemplo

Este es un ejemplo de verificación de correo no enviado. Tenga en cuenta que debe ejecutarse en msdb base de datos.

SELECT * FROM msdb.dbo.sysmail_unsentitems;

Resultado (usando salida vertical):

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

Usé la salida vertical aquí para que no tenga que desplazarse hacia los lados para ver todas las columnas.

En este caso, hay un correo electrónico no enviado. Ejecuté esta consulta inmediatamente después de ejecutar msdb.dbo.sp_send_dbmail para enviar este correo.

Resultó que el correo se envió inmediatamente después de que copié los resultados anteriores, y ahora, cuando vuelvo a ejecutar esa consulta, no obtengo ningún resultado (es decir, no hay correos electrónicos sin enviar).

SELECT * FROM msdb.dbo.sysmail_unsentitems;

Resultado:

(0 rows affected)

Sin embargo, el hecho de que no haya correos electrónicos no enviados no significa que no haya ninguno que haya fallado.

Puede consultar sysmail_faileditems para devolver una lista de correos electrónicos fallidos.

También puede consultar sysmail_sentitems para recibir todos los correos electrónicos enviados.

También puede consultar sysmail_allitems para obtener todos los correos electrónicos (enviados, no enviados, fallidos y reintentando).