Поделиться через


Устранение неполадок компонента Database Mail: отправка почты с удаленного сервера при устранении неполадок на локальном сервере

Добавления: 12 декабря 2006 г.

В этом разделе описывается, как можно использовать удаленный сервер для временной отправки почты, формируемой на локальном сервере. Данная процедура может оказаться полезной при устранении неполадок и исправлении конфигурации компонента Database Mail на локальном сервере. Сведения, содержащиеся в данном разделе, относятся только к почте, отправляемой компонентом Database Mail. К почте, отправляемой хранимой процедурой xp_sendmail или программами сторонних разработчиков, этот раздел не относится.

Bb326746.note(ru-ru,SQL.90).gifПримечание.
В данном разделе под локальным понимается сервер, на котором устраняются неполадки, а под удаленным — другой сервер, отправляющий почту локального, пока на нем производится устранение неполадок.

В один момент времени почта может быть отправлена только с одного сервера. С момента настройки компонента Database Mail на удаленном сервере на отправку почты с локального сервера удаленный сервер больше не может отправлять собственную почту.

Когда удаленный сервер отправляет почту, созданную на локальном сервере, все операции вставки в таблицы msdb для этого адреса и регистрация ошибок компонента Database Mail для этой почты выполняются на локальном сервере. Если локальный сервер возобновил отправку почты, а удаленный сервер настроен на отправку его почты, электронное сообщение может быть отправлено любым из серверов. Если нужно узнать, каким из них отправлено электронное сообщение, просмотрите его заголовок.

Bb326746.note(ru-ru,SQL.90).gifПримечание.
Для выполнения следующих процедур и на локальном, и на удаленном серверах должен быть запущен SQL Server 2005 с пакетом обновления 2 (SP2) или более поздней версии.

Процедуры

Настройка удаленного сервера для отправки электронных сообщений локального сервера

  1. Убедитесь, что компонент Database Mail установлен на удаленном сервере. Сведения об установке компонента Database Mail см. в разделе Разделы руководства по компоненту Database Mail.

  2. Создайте на удаленном сервере профиль, идентичный имеющемуся на локальном сервере, который будет использован для отправки почты на время устранения неполадок. Каждый профиль должен иметь одну допустимую учетную запись, но она не должна быть идентична учетной записи, связанной с соответствующим профилем на локальном сервере.

  3. Убедитесь, что учетная запись входа Windows, которая является членом роли DatabaseMailUserRole на локальном сервере, также является членом той же роли на удаленном сервере, если это членство требуется для отправки почты, создаваемой на локальном сервере.

  4. Создайте текстовый файл DatabaseMail90.exe.config со следующим содержимым. Замените LocalServerName именем локального сервера и сохраните msdb для DatabaseName.

    <configuration>
        <appSettings>
            <add key="DatabaseServerName" value ="LocalServerName" />
            <add key="DatabaseName" value ="msdb" />
        </appSettings>
    </configuration>
    
  5. Сохраните файл на удаленном сервере в той же папке \MSSQL\Binn, что и файл DatabaseMail90.exe. Путь по умолчанию — < drive >\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn.

  6. Чтобы настроить компонент Database Mail на отправку почты с другого сервера, выполните на удаленном сервере следующий код.

    Bb326746.note(ru-ru,SQL.90).gifВажно!
    Этот код производит вставку записи в системную таблицу. Не изменяйте его. Ограничение гарантирует, что запись будет вставлена не более одного раза. Не изменяйте данные в системной таблице никаким другим способом.
    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. Перезапустите компонент Database Mail, выполнив хранимую процедуру dbo.sysmail_start_sp на удаленном сервере. Чтобы изменения вступили в силу, эту хранимую процедуру необходимо запускать каждый раз после изменения значения paramvalue записи ReadFromConfigurationFile в хранимой процедуре dbo.sysmail_configuration или значения ключа DatabaseServerName в файле конфигурации DatabaseMail90.exe.config.

    USE msdb;
    GO
    EXEC dbo.sysmail_start_sp;
    GO
    

Повторная настройка удаленного сервера для отмены отправки электронных сообщений локального сервера

  1. Чтобы возобновить отправку почты с локального сервера, запустите на удаленном сервере следующий код. Этот код останавливает отправку удаленным сервером почты, создаваемой на локальном сервере, и настраивает его на отправку собственной почты.

    USE msdb;
    GO
    EXEC sysmail_configure_sp 
        @parameter_name = N'ReadFromConfigurationFile'
        ,@parameter_value = N'0';
    GO
    
  2. Перезапустите компонент Database Mail, выполнив хранимую процедуру dbo.sysmail_start_sp на удаленном сервере. Чтобы изменения вступили в силу, эту хранимую процедуру необходимо запускать каждый раз после изменения значения paramvalue записи ReadFromConfigurationFile в хранимой процедуре dbo.sysmail_configuration или значения ключа DatabaseServerName в файле конфигурации DatabaseMail90.exe.config.

    USE msdb;
    GO
    EXEC dbo.sysmail_start_sp;
    GO
    

Переключение конфигурации компонента Database Mail на удаленном сервере

  • Чтобы переключить удаленный сервер на отправку электронных сообщений, создаваемых на другом сервере, в системной таблице msdb.dbo.sysmail_configuration установите parameter_value для записи ReadFromConfigurationFile в значение 1, а затем выполните хранимую процедуру msdb.dbo.sysmail_start_sp. Чтобы переключить удаленный сервер на отправку почты, создаваемой на удаленном сервере, установите parameter_value в значение 0, а затем выполните хранимую процедуру msdb.dbo.sysmail_start_sp.

    USE msdb;
    GO
    EXEC sysmail_configure_sp 
        @parameter_name = N'ReadFromConfigurationFile'
        ,@parameter_value = N'0|1';
    GO
    
  • Чтобы настроить удаленный сервер на отправку почты, создаваемой на локальном сервере, измените значение ключа DatabaseServerName в файле конфигурации DatabaseMail90.exe.config на имя этого локального сервера, а затем выполните хранимую процедуру msdb.dbo.sysmail_start_sp.

Разрешения

Разрешение EXECUTE на хранимые процедуры dbo.sysmail_start_sp и sysmail_configure_sp и разрешение INSERT для хранимой процедуры dbo.sysmail_configuration по умолчанию предоставлено членам фиксированной серверной роли sysadmin.

Для создания файла конфигурации в каталоге \MSSQL\Binn необходимы соответствующие разрешения NTFS.

Рекомендуется выполнять процедуры устранения неисправностей под учетной записью входа, которая является членом фиксированной серверной роли sysadmin и на локальном, и на удаленном серверах.

См. также

Задачи

Устранение неполадок в работе компонента Database Mail

Справка и поддержка

Получение помощи по SQL Server 2005