Solucionar problemas de Correo electrónico de base de datos: enviar correo desde el servidor remoto al solucionar problemas del servidor local

Nuevo: 12 de diciembre de 2006

Este tema describe la manera en la que puede utilizar un servidor remoto para enviar temporalmente correo electrónico generado en un servidor local. Este procedimiento es útil cuando está solucionando problemas y reparando la configuración de Correo electrónico de base de datos del servidor local. Este tema sólo se aplica a un mensaje de correo electrónico enviado por Correo electrónico de base de datos. No se ve afectado el correo electrónico enviado con xp_sendmail ni con utilidades de otros fabricantes.

[!NOTA] En este tema, el servidor local se refiere al servidor donde se están solucionando problemas y el servidor remoto se refiere a otro servidor que está enviando correo electrónico al servidor local cuando se están solucionando sus problemas.

El correo electrónico se puede enviar sólo desde un servidor cada vez. Cuando Correo electrónico de base de datos del servidor remoto está configurado para enviar correo electrónico desde el servidor local, el servidor remoto ya no puede enviar su propio correo electrónico.

Cuando el servidor remoto está enviando correo electrónico generado en el servidor local, todas las inserciones en tablas de msdb para dicho correo electrónico y cualquier entrada de error en el Registro de Correo electrónico de base de datos para dicho correo electrónico se producen en el servidor local. Si el servidor local reanuda el envío de correo electrónico cuando el servidor remoto está configurado para enviar el correo electrónico del servidor local, cualquiera de los dos servidores puede enviar cualquier mensaje de correo electrónico. Si desea saber qué servidor envió un mensaje de correo electrónico, debe examinar el encabezado del mensaje.

[!NOTA] Para ejecutar los procedimientos siguientes, el servidor local y el remoto deben estar ejecutando el Service Pack 2 de SQL Server 2005 o versiones posteriores.

Procedimientos

Para configurar el servidor remoto para que envíe los mensajes de correo electrónico del servidor local

  1. Asegúrese de que Correo electrónico de base de datos está configurado en el servidor remoto. Para obtener información acerca de cómo configurar Correo electrónico de base de datos, vea Temas de procedimientos del Correo electrónico de base de datos.

  2. Cree un perfil en el servidor remoto que sea idéntico a cada perfil del servidor local que utilizará el correo electrónico generado durante la solución de problemas. Cada perfil debe tener una cuenta válida, pero la cuenta no tiene que ser idéntica a la cuenta asociada al mismo perfil del servidor local.

  3. Asegúrese de que cualquier cuenta de inicio de sesión autenticada de Windows que sea miembro de DatabaseMailUserRole en el servidor local también es miembro de la misma función en el servidor remoto, si dicha pertenencia es necesaria para enviar correo electrónico generado en el servidor local

  4. Cree un archivo de texto con el nombre DatabaseMail90.exe.config que tenga el siguiente contenido. Reemplace LocalServerName por el nombre del servidor local y mantenga msdb para DatabaseName.

    <configuration>
        <appSettings>
            <add key="DatabaseServerName" value ="LocalServerName" />
            <add key="DatabaseName" value ="msdb" />
        </appSettings>
    </configuration>
    
  5. Guarde el archivo en el servidor remoto en la misma carpeta, \MSSQL\Binn, como DatabaseMail90.exe. La ruta predeterminada es < drive >\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Binn.

  6. Para configurar Correo electrónico de base de datos para que envíe correo electrónico desde otro servidor, ejecute el código siguiente en el servidor remoto.

    Bb326746.note(es-es,SQL.90).gifImportante:
    Este código inserta un registro en una tabla del sistema. No modifique el código. Una restricción evitará que el registro se inserte más de una vez. No modifique directamente de otra manera los datos en esta tabla del sistema.
    USE msdb;
    GO
    INSERT INTO [msdb].[dbo].[sysmail_configuration]
        (
        [paramname]
        ,[paramvalue]
        ,[description]
        )
    VALUES
        (
        N'ReadFromConfigurationFile'
        ,N'1'
        ,N'Send mail from mail server in configuration file'
        );
    GO
    
  7. Reinicie Correo electrónico de base de datos ejecutando dbo.sysmail_start_sp en el servidor remoto. Debe ejecutar este procedimiento almacenado cada vez que el valor paramvalue para el registro ReadFromConfigurationFile de dbo.sysmail_configuration o el valor de la clave DatabaseServerName del archivo de configuración DatabaseMail90.exe.config se cambie para que el cambio surta efecto.

    USE msdb;
    GO
    EXEC dbo.sysmail_start_sp;
    GO
    

Para volver a configurar el servidor remoto para detener el envío de mensajes de correo electrónico del servidor local

  1. Para reanudar el envío de correo electrónico desde el servidor local, ejecute el código siguiente en el servidor remoto. Este código configura el servidor remoto para detener el envío de correo electrónico generado en el servidor local y volver a enviar el correo electrónico generado en el servidor remoto.

    USE msdb;
    GO
    EXEC sysmail_configure_sp 
        @parameter_name = N'ReadFromConfigurationFile'
        ,@parameter_value = N'0';
    GO
    
  2. Reinicie Correo electrónico de base de datos ejecutando dbo.sysmail_start_sp en el servidor remoto. Debe ejecutar este procedimiento almacenado cada vez que el valor paramvalue para el registro ReadFromConfigurationFile de dbo.sysmail_configuration o el valor de la clave DatabaseServerName del archivo de configuración DatabaseMail90.exe.config se cambie para que el cambio surta efecto.

    USE msdb;
    GO
    EXEC dbo.sysmail_start_sp;
    GO
    

Para cambiar la configuración de Correo electrónico de base de datos en el servidor remoto

  • Para cambiar el servidor remoto para que envíe mensajes de correo electrónico generados en otro servidor, en msdb.dbo.sysmail_configuration, establezca el valor parameter_value para el registro ReadFromConfigurationFile en 1 y, a continuación, ejecute msdb.dbo.sysmail_start_sp. Para cambiar el servidor remoto para que envíe correo electrónico generado en el servidor remoto, establezca el valor parameter_value en 0 y, a continuación, ejecute msdb.dbo.sysmail_start_sp.

    USE msdb;
    GO
    EXEC sysmail_configure_sp 
        @parameter_name = N'ReadFromConfigurationFile'
        ,@parameter_value = N'0|1';
    GO
    
  • Para configurar el servidor remoto para que envíe correo electrónico generado en un servidor local diferente, cambie el valor de la clave DatabaseServerName del archivo de configuración DatabaseMail90.exe.config al nombre del servidor local y, a continuación, ejecute msdb.dbo.sysmail_start_sp.

Permisos

De forma predeterminada, se concede el permiso EXECUTE de dbo.sysmail_start_sp y sysmail_configure_sp y el permiso INSERT de dbo.sysmail_configuration a los miembros de la función fija de servidor sysadmin.

El permiso NTFS es necesario para crear el archivo de configuración en \MSSQL\Binn.

Recomendamos que la cuenta de inicio de sesión que ejecute estos procedimientos de solución de problemas sea miembro de la función fija de servidor sysadmin en el servidor local y en el remoto.

Vea también

Tareas

Solucionar problemas del Correo electrónico de base de datos

Ayuda e información

Obtener ayuda sobre SQL Server 2005