データベース メールから送信された電子メール メッセージの状態を確認する方法 (Transact-SQL)

データベース メールは、送信する電子メール メッセージのコピーを保持し、msdb データベースの sysmail_allitemssysmail_sentitemssysmail_unsentitems、および sysmail_faileditems の各ビューに表示します。データベース メール外部プログラムは、利用状況をログに記録し、Windows アプリケーション イベント ログや msdb データベースの sysmail_event_log ビューでそのログを表示します。電子メール メッセージの状態を確認するには、このビューに対してクエリを実行します。電子メール メッセージの状態は、sentunsentretrying、および failed のいずれかになります。

電子メール メッセージの状態を確認するには

  1. sysmail_allitems テーブルから選択して、mailitem_id または sent_status で対象のメッセージを指定します。

  2. その電子メール メッセージについてデータベース メール外部プログラムから返される状態を確認するには、次のセクションに示すように、mailitem_id 列で sysmail_allitemssysmail_event_log ビューを結合します。

ms191278.note(ja-jp,SQL.90).gifメモ :
データベース メール外部プログラムの既定では、正常に送信されたメッセージについての情報がログに記録されません。すべてのメッセージをログに記録するには、データベース メール構成ウィザード[システム パラメータの構成] ページを使用して、ログのレベルを詳細に設定します。

使用例

次の例では、外部プログラムが正常に送信できなかった、danw への電子メール メッセージに関する情報を表示します。このステートメントは、件名、外部プログラムでメッセージの送信に失敗した日時、およびデータベース メール ログに記録されているエラー メッセージの一覧を表示します。

USE msdb ;
GO

-- Show the subject, the time that the mail item row was last
-- modified, and the log information.
-- Join sysmail_faileditems to sysmail_event_log 
-- on the mailitem_id column.
-- In the WHERE clause list items where danw was in the recipients,
-- copy_recipients, or blind_copy_recipients.
-- These are the items that would have been sent
-- to danw.

SELECT items.subject,
       items.last_mod_date,
       l.description FROM dbo.sysmail_faileditems as items
  JOIN dbo.sysmail_event_log AS l
  ON items.mailitem_id = l.mailitem_id
  WHERE items.recipients LIKE '%danw%'  OR
        items.copy_recipients LIKE '%danw%' OR
        items.blind_copy_recipients LIKE '%danw%'
GO

参照

概念

データベース メールのログ記録と監査

その他の技術情報

データベース メール ビュー (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手