Dépannage de la messagerie de base de données : envoyer du courrier à partir d'un serveur distant lors du dépannage d'un serveur local

Nouveau : 12 décembre 2006

Cette rubrique décrit la méthode permettant d'utiliser un serveur distant afin d'envoyer de manière temporaire du courrier généré sur un serveur local. Cette procédure est utile lorsque vous dépannez et réparez la configuration de la messagerie de base de données sur le serveur local. Cette rubrique ne s'applique qu'aux messages envoyés par la messagerie de base de données. Les messages envoyés à l'aide de xp_sendmail ou des utilitaires tiers ne sont pas concernés.

Bb326746.note(fr-fr,SQL.90).gifRemarque :
Dans cette rubrique, le serveur local décrit le serveur en cours de dépannage et le serveur distant correspond à un autre serveur chargé d'envoyer le courrier électronique du serveur local au cours du dépannage de ce dernier.

Le courrier électronique peut être envoyé à partir d'un seul serveur à la fois. Lorsque la messagerie de base de données du serveur distant est configurée pour envoyer le courrier électronique à partir du serveur local, le serveur distant ne peut plus envoyer son propre courrier.

Si le serveur distant envoie du courrier généré sur le serveur local, toutes les insertions dans les tables msdb pour ce courrier et les entrées du journal d'erreurs de la messagerie de base de données pour ce courrier ont lieu sur le serveur local. Si le serveur local reprend l'envoi du courrier lorsque le serveur distant est configuré pour envoyer le courrier du serveur local, l'un des deux serveurs peut envoyer des messages. Si vous souhaitez savoir quel serveur a envoyé un message électronique, vous devez examiner l'en-tête du message.

Bb326746.note(fr-fr,SQL.90).gifRemarque :
Pour exécuter les procédure suivantes, les serveurs distant et local doivent exécuter SQL Server 2005 Service Pack 2 ou une version ultérieure.

Procédures

Pour configurer le serveur distant pour qu'il envoie les messages électroniques du serveur local

  1. Vérifiez que la messagerie de base de données est configurée sur le serveur distant. Pour des informations sur la manière de configurer la messagerie de base de données, consultez Rubriques des procédures relatives à la messagerie de base de données.

  2. Créez un profil sur le serveur distant identique à chaque profil sur le serveur local qui sera utilisé par le courrier généré au cours du dépannage. Chaque profil doit posséder un compte valide, mais il n'est pas nécessaire que le compte soit identique au compte associé au même profil sur le serveur local.

  3. Vérifiez que les comptes de connexion Windows authentifiée qui sont membres de DatabaseMailUserRole sur le serveur local sont également membres du même rôle sur le serveur distant, si cette appartenance est nécessaire pour envoyer du courrier généré sur le serveur local

  4. Créez un fichier texte nommé DatabaseMail90.exe.config contenant les informations suivantes. Remplacez LocalServerName par le nom du serveur local et conservez msdb pour DatabaseName

    <configuration>
        <appSettings>
            <add key="DatabaseServerName" value ="LocalServerName" />
            <add key="DatabaseName" value ="msdb" />
        </appSettings>
    </configuration>
    
  5. Enregistrez le fichier sur le serveur distant dans le même dossier (\MSSQL\Binn) que DatabaseMail90.exe. Le chemin d'accès par défaut est < drive >\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn.

  6. Pour configurer la messagerie de base de données pour envoyer du courrier à partir d'un autre serveur, exécutez le code suivant sur le serveur distant.

    Bb326746.note(fr-fr,SQL.90).gifImportant :
    Ce code insère un enregistrement dans une table système. Ne modifiez pas ce code. Une contrainte empêche que l'enregistrement ne soit inséré plusieurs fois. Ne modifiez pas directement les données dans cette table système.
    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. Redémarrez la messagerie de base de données en exécutant dbo.sysmail_start_sp sur le serveur distant. Pour que le changement prenne effet, exécutez cette procédure stockée à chaque modification de la valeur paramvalue de l'enregistrement ReadFromConfigurationFile dans dbo.sysmail_configuration ou de la valeur de la clé DatabaseServerName dans le fichier de configuration DatabaseMail90.exe.config.

    USE msdb;
    GO
    EXEC dbo.sysmail_start_sp;
    GO
    

Pour reconfigurer le serveur distant pour arrêter l'envoi des messages électroniques du serveur local

  1. Pour reprendre l'envoi du courrier à partir du serveur local, exécutez le code suivant sur le serveur distant. Ce code configure le serveur distant pour arrêter l'envoi du courrier généré sur le serveur local et rétablit l'envoi du courrier généré sur le serveur distant.

    USE msdb;
    GO
    EXEC sysmail_configure_sp 
        @parameter_name = N'ReadFromConfigurationFile'
        ,@parameter_value = N'0';
    GO
    
  2. Redémarrez la messagerie de base de données en exécutant dbo.sysmail_start_sp sur le serveur distant. Pour que le changement prenne effet, exécutez cette procédure stockée à chaque modification de la valeur paramvalue de l'enregistrement ReadFromConfigurationFile dans dbo.sysmail_configuration ou de la valeur de la clé DatabaseServerName dans le fichier de configuration DatabaseMail90.exe.config.

    USE msdb;
    GO
    EXEC dbo.sysmail_start_sp;
    GO
    

Pour basculer la configuration de la messagerie de base de données sur le serveur distant

  • Pour configurer le serveur distant pour envoyer des messages qui sont générés sur un autre serveur, dans msdb.dbo.sysmail_configuration, affectez à parameter_value de l'enregistrement ReadFromConfigurationFile la valeur 1, puis exécutez msdb.dbo.sysmail_start_sp. Pour configurer le serveur distant pour envoyer des messages qui sont générés sur le serveur distant, affectez à parameter_value la valeur 0, puis exécutez msdb.dbo.sysmail_start_sp.

    USE msdb;
    GO
    EXEC sysmail_configure_sp 
        @parameter_name = N'ReadFromConfigurationFile'
        ,@parameter_value = N'0|1';
    GO
    
  • Pour configurer le serveur distant pour envoyer du courrier généré sur un autre serveur local, remplacez la valeur de la clé DatabaseServerName dans le fichier de configuration DatabaseMail90.exe.config par le nom de ce serveur local, puis exécutez msdb.dbo.sysmail_start_sp.

Autorisations

L'autorisation EXECUTE pour dbo.sysmail_start_sp et sysmail_configure_sp et l'autorisation INSERT pour dbo.sysmail_configuration utilisent par défaut les membres du rôle de serveur fixe sysadmin.

L'autorisation NTFS est nécessaire pour créer le fichier de configuration dans \MSSQL\Binn.

Il est recommandé que le compte de connexion qui exécute ces procédures de dépannage appartienne au rôle de serveur fixe sysadmin sur le serveur local et le serveur distant.

Voir aussi

Tâches

Dépannage de la messagerie de base de données

Aide et Informations

Assistance sur SQL Server 2005