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

Comprobar si hay errores de correo electrónico en SQL Server (T-SQL)

Si intenta enviar correo con SQL Server pero no se entrega, intente verificar sysmail_faileditems ver.

Ejemplo

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

SELECT * FROM msdb.dbo.sysmail_faileditems;

Resultado (usando salida vertical):

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

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

En este caso, estoy mostrando un correo electrónico fallido. De hecho, tuve dos correos electrónicos fallidos, pero decidí que era más conciso mostrar solo un resultado.

En mi caso, había usado el servidor de correo incorrecto en el código que envía el correo electrónico y los correos electrónicos fallaron. Tan pronto como actualicé el código para usar el servidor de correo correcto, todos los correos electrónicos posteriores se enviaron correctamente. Sin embargo, esto no cambia los que ya habían fallado y, por lo tanto, permanecen en los sysmail_faileditems ver.

Puede consultar sysmail_unsentitems para devolver una lista de correos electrónicos no enviados (aquellos que aún no se han enviado, no necesariamente 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).