データベース メールのトラブルシューティング : ローカル サーバーのトラブルシューティング時のリモート サーバーからのメール送信

新規 : 2006 年 12 月 12 日

ここでは、ローカル サーバーで生成された電子メールを、リモート サーバーで一時的に送信する方法について説明します。ローカル サーバー上のデータベース メールの構成に問題がある場合は、その原因を確認して修復するときに、この手順が役立ちます。このトピックの内容は、データベース メールで送信される電子メールにのみ適用されます。xp_sendmail またはサード パーティのユーティリティを使用して送信する電子メールには影響を与えません。

Bb326746.note(ja-jp,SQL.90).gifメモ :
このトピックで、ローカル サーバーは、トラブルシューティング対象のサーバーを指しています。リモート サーバーは、トラブルシューティング時にローカル サーバーに代わって電子メールを送信する別のサーバーを指しています。

電子メールは、一度に 1 台のサーバーからのみ送信できます。リモート サーバーのデータベース メールがローカル サーバーの電子メールを送信するように構成されている場合、そのリモート サーバー自体の電子メールは送信できません。

ローカル サーバーで生成された電子メールをリモート サーバーが送信する場合、その電子メールのすべての電子メール エラーおよびデータベース メール ログ エラーは、ローカル サーバーの msdb テーブルに書き込まれます。リモート サーバーがローカル サーバーの電子メールを送信するように構成されているとき、ローカル サーバーで電子メールの送信を再開した場合は、どちらのサーバーも電子メール メッセージを送信できます。どちらのサーバーが電子メール メッセージを送信したのかを確認するには、電子メール メッセージのヘッダーを参照する必要があります。

Bb326746.note(ja-jp,SQL.90).gifメモ :
以下の手順を実行するには、ローカル サーバーとリモート サーバーが両方とも SQL Server 2005 Service Pack 2 以降のバージョンを実行している必要があります。

手順

ローカル サーバーの電子メール メッセージをリモート サーバーが送信するように構成するには

  1. リモート サーバーでデータベース メールがセットアップされていることを確認します。データベース メールをセットアップする方法については、「データベース メールの操作方法に関するトピック」を参照してください。

  2. トラブルシューティング中に生成された電子メールが使用する、ローカル サーバー上の各プロファイルと同じプロファイルを、リモート サーバー上に作成します。各プロファイルには、有効なアカウントが 1 つ必要です。ただし、そのアカウントは、ローカル サーバー上のプロファイルのアカウントと同一である必要はありません。

  3. ローカル サーバーで生成された電子メールを送信するのに DatabaseMailUserRole のメンバシップが必要である場合、ローカル サーバーの DatabaseMailUserRole のメンバになっている Windows 認証ログイン アカウントが、リモート サーバーでもそのロールのメンバになっていることを確認します。

  4. DatabaseMail90.exe.config というテキスト ファイルを作成し、次の内容を記述します。LocalServerName には、ローカル サーバーの名前を指定します。 DatabaseNamemsdb はそのままにします。

    <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. 別のサーバーの電子メールを送信できるようにデータベース メールを構成するため、リモート サーバーで次のコードを実行します。

    Bb326746.note(ja-jp,SQL.90).gif重要 :
    このコードによって、システム テーブルにレコードが挿入されます。このコードは変更しないでください。制約が設定されているので、レコードは 1 回しか挿入されません。制約が機能している限り、このシステム テーブルのデータは直接変更しないでください。
    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. リモート サーバーで dbo.sysmail_start_sp を実行して、データベース メールを再起動します。 dbo.sysmail_configuration ReadFromConfigurationFile レコードの paramvalue、または DatabaseMail90.exe.config 構成ファイルの DatabaseServerName キーの値を変更して、変更を有効にするときは、毎回このストアド プロシージャを実行する必要があります。

    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. リモート サーバーで dbo.sysmail_start_sp を実行して、データベース メールを再起動します。 dbo.sysmail_configuration ReadFromConfigurationFile レコードの paramvalue、または DatabaseMail90.exe.config 構成ファイルの DatabaseServerName キーの値を変更して、変更を有効にするときは、毎回このストアド プロシージャを実行する必要があります。

    USE msdb;
    GO
    EXEC dbo.sysmail_start_sp;
    GO
    

リモート サーバー上でデータベース メールの構成を切り替えるには

  • 別のサーバーで生成された電子メール メッセージを送信するようにリモート サーバーを切り替えるには、msdb.dbo.sysmail_configurationReadFromConfigurationFile レコードの parameter_value1 に設定し、msdb.dbo.sysmail_start_sp を実行します。リモート サーバーで生成された電子メール メッセージを送信するようにリモート サーバーを切り替えるには、parameter_value0 に設定し、msdb.dbo.sysmail_start_sp を実行します。

    USE msdb;
    GO
    EXEC sysmail_configure_sp 
        @parameter_name = N'ReadFromConfigurationFile'
        ,@parameter_value = N'0|1';
    GO
    
  • 別のローカル サーバーで生成された電子メールを送信するようにリモート サーバーを構成するには、DatabaseMail90.exe.config 構成ファイルの DatabaseServerName キーの値をそのローカル サーバーの名前に変更し、msdb.dbo.sysmail_start_sp を実行します。

権限

dbo.sysmail_start_sp および sysmail_configure_sp の EXECUTE 権限、dbo.sysmail_configuration の INSERT 権限が、既定により sysadmin 固定サーバー ロールのメンバに与えられます。

\MSSQL\Binn に構成ファイルを作成するには、NTFS アクセス許可が必要です。

ローカル サーバーとリモート サーバーの両方で sysadmin 固定サーバー ロールのメンバに設定されているログイン アカウントを使用して、上記のトラブルシューティング手順を実行することをお勧めします。

参照

処理手順

データベース メールのトラブルシューティング

ヘルプおよび情報

SQL Server 2005 の参考資料の入手