Solución de problemas del Correo electrónico de base de datos: correo en cola, pero no hay entradas en sysmail_event_log ni en el registro de sucesos de aplicación de Windows

En este tema se describe el modo de solucionar un problema en el que los mensajes de correo electrónico se ponen en cola correctamente, pero no aparece actividad del programa externo en la vista sysmail_event_log (Transact-SQL) o en el registro de sucesos de aplicación de Windows.

El Correo electrónico de base de datos depende de Service Broker para poner en cola los mensajes de correo electrónico. Si el Correo electrónico de base de datos se detiene o si la entrega de mensajes de Service Broker no está activada en la base de datos msdb, los mensajes se ponen en cola pero no se pueden entregar. En ese caso, los mensajes de Service Broker permanecen en la cola del correo de Service Broker. Service Broker no activa el programa externo, por lo que no hay entradas de registro en sysmail_event_log ni actualizaciones del estado del elemento en sysmail_allitems.

Ejecute la siguiente instrucción para comprobar si el Correo electrónico de base de datos está habilitado:

SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ;

El valor 0 indica que la entrega de mensajes de Service Broker no está activada en la base de datos msdb. Para corregir el problema, active Service Broker en la base de datos. Para obtener información acerca de cómo activar la entrega de mensajes de Service Broker, vea Cómo activar la entrega de mensajes de Service Broker en las bases de datos (Transact-SQL).

El Correo electrónico de base de datos se basa en una serie de procedimientos almacenados internos. Para reducir la superficie, los procedimientos almacenados están desactivados en una nueva instalación de SQL Server. Para habilitar estos procedimientos almacenados, use la utilidad Configuración de superficie de SQL Server o el procedimiento almacenado del sistema sp_configure (Transact-SQL).

El Correo electrónico de base de datos se puede detener en la base de datos msdb. Para comprobar el estado del Correo electrónico de base de datos, ejecute la siguiente instrucción:

EXECUTE dbo.sysmail_help_status_sp ;

Para iniciar el Correo electrónico de base de datos en una base de datos host de correo, ejecute el siguiente comando en la base de datos msdb:

EXECUTE dbo.sysmail_start_sp ;

Service Broker examina la duración del diálogo de los mensajes al activarse; por lo tanto, los mensajes que hayan estado en la cola de transmisión de Service Broker durante más tiempo que el especificado para la duración configurada del diálogo producen un error inmediato. El Correo electrónico de base de datos actualiza el estado de los mensajes con error en sysmail_allitems (Transact-SQL) y las vistas relacionadas. Debe decidir si los mensajes se deben enviar de nuevo. Para obtener más información acerca de cómo configurar la duración del diálogo que el Correo electrónico de base de datos utiliza, vea sysmail_configure_sp (Transact-SQL).

Vea también

Tareas

Solucionar problemas del Correo electrónico de base de datos
Solucionar problemas del Correo electrónico de base de datos: pasos generales

Conceptos

Arquitectura del Correo electrónico de base de datos
Correo electrónico de base de datos

Ayuda e información

Obtener ayuda sobre SQL Server 2005