sql >> データベース >  >> RDS >> Sqlserver

SQL Server(T-SQL)で電子メールの送信に失敗した理由を調べる

    SQL Serverのデータベースメールを使用してメールを送信しようとしても送信に失敗した場合は、sysmail_event_logを確認できます。 失敗した理由を確認してください。

    sysmail_event_log viewは、データベースメールシステムから返されるWindowsまたはSQLServerメッセージごとに1行を返します。 「メッセージ」とは、実際のメールメッセージを意味するものではありません。メールが失敗した理由を説明するエラーメッセージなどのメッセージを意味します。

    sysmail_configure_spを使用することもできます ログに記録されるメッセージのタイプを判別するためのストアドプロシージャ。

    sysmail_event_logの使用方法を示す例を次に示します。 すべてのメッセージを返します。

    SELECT * FROM msdb.dbo.sysmail_event_log;

    私のシステムでは、これはここに表示するには多すぎるデータを返しますが、ここでも、返された1つのメッセージを表示します。

    SELECT * 
    FROM msdb.dbo.sysmail_event_log
    WHERE log_id = 2;

    結果(垂直出力を使用):

    log_id        | 2
    event_type    | error
    log_date      | 2020-08-24 02:40:53.317
    description   | The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 1 (2020-08-24T02:40:52). Exception Message: Could not connect to mail server. (No connection could be made because the target machine actively refused it 127.0.0.1:25).)
    process_id    | 68
    mailitem_id   | 1
    account_id    | NULL
    last_mod_date | 2020-08-24 02:40:53.317
    last_mod_user | sa

    この例では、横にスクロールする必要がないように垂直出力を使用しました。

    ログレベルを確認する

    sysmail_help_configure_spを使用できます ログに記録されるメッセージのタイプを確認するためのストアドプロシージャ。

    例:

    EXEC msdb.dbo.sysmail_help_configure_sp 
        @parameter_name = LoggingLevel;

    結果:

    +--------------+--------------+------------------------------------------------------------------------------+
    | paramname    | paramvalue   | description                                                                  |
    |--------------+--------------+------------------------------------------------------------------------------|
    | LoggingLevel | 2            | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 |
    +--------------+--------------+------------------------------------------------------------------------------+

    私の場合、LoggingLevel 2です 、これはデフォルト値です。この設定は、エラー、警告、および情報メッセージをログに記録します。

    ログレベルの変更

    sysmail_configure_spを使用できます ロギングレベルを変更するためのストアドプロシージャ。

    具体的には、LoggingLevelを選択できます 1の 、2 、または3

    これらは以下をログに記録します:

    1. エラーのみ。
    2. エラー、警告、および情報メッセージ(デフォルト)。
    3. エラー、警告、情報メッセージ、成功メッセージ、および追加の内部メッセージ。

    問題のトラブルシューティングを行っている場合は、ログレベルを一時的に3に変更することをお勧めします。

    ロギングレベルを3に変更する例を次に示します。 。

    EXECUTE msdb.dbo.sysmail_configure_sp  
        'LoggingLevel', '3';

    それを実行した後、LoggingLevelを確認できます もう一度sysmail_help_configure_spを使用します ストアドプロシージャ。

    EXEC msdb.dbo.sysmail_help_configure_sp 
        @parameter_name = LoggingLevel;

    結果:

    +--------------+--------------+------------------------------------------------------------------------------+
    | paramname    | paramvalue   | description                                                                  |
    |--------------+--------------+------------------------------------------------------------------------------|
    | LoggingLevel | 3            | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 |
    +--------------+--------------+------------------------------------------------------------------------------+

    1. FROMキーワードが予期された場所に見つかりません(Oracle SQL)

    2. 会計アプリケーションの金額にfloatまたはdecimalを使用しますか?

    3. ユーザーモデルをPostgresにHibernateで保存する

    4. SQLを使用してテキストフィールドの単語数の統計を決定する