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

La solución de problemas del Correo electrónico de base de datos implica la comprobación de las siguientes áreas generales del sistema del Correo electrónico de base de datos. Estos procedimientos se presentan en un orden lógico, pero se pueden evaluar en cualquier orden.

Determinar si el Correo electrónico de base de datos está habilitado

  1. En SQL Server Management Studio, conéctese a una instancia de SQL Server utilizando una ventana del editor de consultas y, a continuación, ejecute el código siguiente:

    sp_configure 'show advanced', 1; 
    GO
    RECONFIGURE;
    GO
    sp_configure;
    GO
    

    En el panel de resultados, confirme que run_value para Database Mail XPs está establecido en 1.

    Si run_value no es 1, el Correo electrónico de base de datos no está habilitado. El Correo electrónico de base de datos no se habilita automáticamente para reducir el número de características disponibles en caso de ataque por parte de un usuario malintencionado. Para obtener más información, vea Descripción de la configuración del área expuesta.

  2. Si decide que es adecuado habilitar el Correo electrónico de base de datos, ejecute el código siguiente:

    sp_configure 'Database Mail XPs', 1; 
    GO
    RECONFIGURE;
    GO
    
  3. Para restaurar el procedimiento sp_configure a su estado predeterminado, que no muestra las opciones avanzadas, ejecute el código siguiente:

    sp_configure 'show advanced', 0; 
    GO
    RECONFIGURE;
    GO
    

Determinar si los usuarios están configurados correctamente para enviar mensajes de Correo electrónico de base de datos

  1. Para enviar mensajes del Correo electrónico de base de datos, los usuarios deben ser miembros de DatabaseMailUserRole. Los miembros de la función fija de servidor sysadmin y de la función db_owner de msdb son automáticamente miembros de la función DatabaseMailUserRole. Para obtener una lista de todos los demás miembros de DatabaseMailUserRole, ejecute la instrucción siguiente:

    EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole';
    
  2. Para agregar usuarios a la función DatabaseMailUserRole, utilice la instrucción siguiente:

    sp_addrolemember @rolename = 'DatabaseMailUserRole'
       ,@membername = '<database user>';
    
  3. Para enviar mensajes del Correo electrónico de base de datos, los usuarios deben tener acceso al menos a un perfil del Correo electrónico de base de datos. Para obtener una lista de los usuarios (entidades de seguridad) y los perfiles a los que tienen acceso, ejecute la instrucción que se indica a continuación.

    EXEC msdb.dbo.sysmail_help_principalprofile_sp;
    
  4. Utilice el Asistente para configuración de Correo electrónico de base de datos para crear perfiles y conceder acceso a los mismos a los usuarios.

Confirmar que se ha iniciado el Correo electrónico de base de datos

  1. El Programa externo Correo electrónico de base de datos se activa cuando hay mensajes de correo electrónico que deben procesarse. El programa termina cuando ya no hay mensajes para enviar durante el período de tiempo de espera especificado. Para confirmar que se ha iniciado la activación del Correo electrónico de base de datos, ejecute la instrucción que se indica a continuación.

    EXEC msdb.dbo.sysmail_help_status_sp;
    
  2. Si no se ha iniciado la activación del Correo electrónico de base de datos, ejecute la instrucción que se indica a continuación:

    EXEC msdb.dbo.sysmail_start_sp;
    
  3. Si se ha iniciado el programa externo del Correo electrónico de base de datos, compruebe el estado de la cola de correo electrónico con la instrucción siguiente:

    EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail';
    

    La cola debe tener el estado RECEIVES_OCCURRING. Su estado puede variar según el momento. Si el estado de la cola de correo no es RECEIVES_OCCURRING, intente detenerla mediante sysmail_stop_sp e iniciarla mediante sysmail_start_sp.

[!NOTA]

Utilice la columna length del conjunto de resultados de sysmail_help_queue_sp para determinar el número de mensajes de correo electrónico que se encuentran en la cola de correo.

Determinar si los problemas del Correo electrónico de base de datos afectan a todas las cuentas de un perfil o sólo a algunas de ellas

  1. Si ha determinado que sólo algunos perfiles pueden enviar correo, puede que tenga problemas con las cuentas del Correo electrónico de base de datos utilizadas por los perfiles problemáticos. Para determinar qué cuentas envían correo correctamente, ejecute la instrucción siguiente:

    SELECT sent_account_id, sent_date FROM msdb.dbo.sysmail_sentitems;
    
  2. Si un perfil que no funciona no utiliza ninguna de las cuentas indicadas, es posible que todas las cuentas disponibles para el perfil no funcionen correctamente. Para probar cuentas individuales, utilice el Asistente para configuración de Correo electrónico de base de datos para crear un nuevo perfil con una sola cuenta y, a continuación, utilice el cuadro de diálogo Enviar correo electrónico de prueba para enviar correo con la nueva cuenta.

  3. Para ver los mensajes de error devueltos por el Correo electrónico de base de datos, ejecute la instrucción siguiente:

    SELECT * FROM msdb.dbo.sysmail_event_log;
    

[!NOTA]

El Correo electrónico de base de datos considera que se ha enviado un mensaje cuando se ha entregado correctamente a un servidor de correo SMTP. La aparición de errores posteriores, como una dirección de correo electrónico de destinatario no válida, puede impedir que se entregue el mensaje, pero no constarán en el registro del Correo electrónico de base de datos.

Configurar el Correo electrónico de base de datos para volver a intentar la entrega de correo electrónico

  1. Si ha determinado que el Correo electrónico de base de datos genera un error porque no se puede alcanzar el servidor SMTP de forma confiable, quizás pueda aumentar la tasa de entrega correcta de correo aumentando el número de veces que el Correo electrónico de base de datos intenta enviar cada mensaje. Inicie el Asistente para configuración de Correo electrónico de base de datos y seleccione la opción Ver o cambiar parámetros del sistema. Como alternativa, puede asociar más cuentas al perfil de modo que, en caso de conmutación por error de la cuenta principal, el Correo electrónico de base de datos utilice la cuenta de conmutación por error para enviar mensajes de correo electrónico.

  2. En la página Configurar parámetros del sistema, los valores predeterminados de 5 veces para Número de reintentos de cuenta y de 60 segundos para Intervalo entre reintentos de cuenta significan que la entrega de mensajes provocará un error si no se puede alcanzar el servidor SMTP en 5 minutos. Aumente los valores de estos parámetros para aumentar el tiempo tras el cual la entrega de mensajes provoca un error.

[!NOTA]

Cuando se envían grandes cantidades de mensajes, el hecho de aumentar los valores predeterminados puede aumentar la confiabilidad, pero aumentará sustancialmente la utilización de recursos, puesto que se intentará entregar un gran número de mensajes varias veces. Para tratar el problema de origen, resuelva el problema de red o de servidor SMTP que impide al Correo electrónico de base de datos ponerse en contacto con el servidor SMTP inmediatamente.

Seguridad

Debe ser miembro de la función fija de servidor sysadmin para solucionar los problemas del Correo electrónico de base de datos. Los usuarios que no son miembros de la función fija de servidor sysadmin sólo podrán obtener información acerca de los mensajes de correo electrónico que intenten enviar, pero no de los enviados por otros usuarios.