sysmail_unsentitems (Transact-SQL)

適用対象:SQL ServerAzure SQL Managed Instance

未送信または再試行中の状態のデータベース メールメッセージごとに 1 行が含まれます。 未送信または再試行中の状態のメッセージはメール キューに残り、いつでも送信できます。 メッセージには、次の理由で 未送信 の状態が表示される場合があります。

  • メッセージが新しく、メール キューに挿入されていても、データベース メールが他のメッセージの処理中でこのメッセージに達していない。

  • データベース メール外部プログラムが実行されておらず、メールが送信されていない

メッセージの 再試行 状態は、次の理由で発生する可能性があります。

  • データベース メールでメッセージの送信が試行されたが、SMTP メール サーバーに接続できなかった。 データベース メールは、メッセージを送信したプロファイルに割り当てられている他のデータベース メールアカウントを使用してメッセージの送信を試みます。 アカウントがメールを送信できない場合、データベース メールはアカウント再試行遅延パラメーターに対して構成された時間の長さを待ってから、メッセージの再送信を試みます。 データベース メールは、Account Retry Attempts パラメーターを使用して、メッセージの送信を試行する回数を決定します。 メッセージは、データベース メールがメッセージを送信しようとしている限り、再試行状態を保持します。

このビューは、送信待ちメッセージの数と、それらのメール キューでの待機時間を確認する場合に使用できます。 通常、 未送信 メッセージの数は少なくなります。 通常の操作中にベンチマーク テストを実施して、操作のメッセージ キュー内の適切な数のメッセージを決定します。

データベース メールによって処理されたすべてのメッセージを表示するには、sysmail_allitems (Transact-SQL) を使用します。 失敗した状態のメッセージのみを表示するには、 sysmail_faileditems (Transact-SQL) を使用します。 送信されたメッセージのみを表示するには、 sysmail_sentitems (Transact-SQL) を使用します。

列名 データ型 説明
mailitem_id int メール キュー内のメール アイテムの識別子。
profile_id int メッセージの送信に使用されるプロファイルの識別子。
受信者 varchar(max) メッセージ受信者の電子メール アドレス。
copy_recipients varchar(max) メッセージのコピーを受信したユーザーの電子メール アドレス。
blind_copy_recipients varchar(max) メッセージのコピーを受信するが、メッセージ ヘッダーに名前が表示されないユーザーの電子メール アドレス。
subject nvarchar(510) メッセージの件名行。
body varchar(max) メッセージの本文
body_format varchar(20) メッセージの本文形式。 指定できる値は TEXTHTML です
importance varchar(6) メッセージの importance パラメーター。
sensitivity varchar(12) メッセージの 秘密度 パラメーター。
file_attachments varchar(max) 電子メール メッセージに添付されたファイル名の、セミコロン区切りの一覧。
attachment_encoding varchar(20) メールの添付ファイルの種類。
query varchar(max) メール プログラムによって実行されるクエリ。
execute_query_database sysname メール プログラムがクエリを実行したデータベース コンテキスト。
attach_query_result_as_file bit 値が 0 の場合、クエリ結果は本文の内容の後の電子メール メッセージの本文に含まれていました。 値が 1 の場合、結果が添付ファイルとして返されたことを示します。
query_result_header bit 値が 1 の場合、クエリ結果には列ヘッダーが含まれていました。 値が 0 の場合、クエリの結果に列のヘッダーが含まれていないことを示します。
query_result_width int メッセージの query_result_width パラメーター。
query_result_separator char(1) クエリの出力で列の区切りに使用された文字。
exclude_query_output bit メッセージの exclude_query_output パラメーター。 詳細については、「 sp_send_dbmail (Transact-SQL)」を参照してください。
append_query_error bit メッセージの append_query_error パラメーター。 0 は、クエリにエラーがあった場合、データベース メールで電子メール メッセージが送信されないことを示します。
send_request_date datetime メッセージがメール キューに配置された日時。
send_request_user sysname メッセージを送信したユーザー。 これは、メッセージの [差出 人] フィールドではなく、データベース メール プロシージャのユーザー コンテキストです。
sent_account_id int メッセージの送信に使用されるデータベース メール アカウントの識別子。 このビューの場合は常に NULL。
sent_status varchar(8) データベース メールがメールの送信を試みなかった場合は、未送信になります。 データベース メールがメッセージ送信に失敗したが、もう一度試行している場合は再試行されます。
sent_date datetime データベース メールが最後にメールを送信しようとした日時。 データベース メールでメッセージの送信が試行されていない場合は NULL になります。
last_mod_date datetime 行の最後の変更の日時。
last_mod_user sysname 行を最後に変更したユーザー。

注釈

データベース メールのトラブルシューティングを行うとき、このビューでは送信済みのメッセージ数とメッセージの待機時間を確認できるので、問題の性質を特定するのに役立ちます。 メッセージが 1 つも送信されていない場合は、データベース メール外部プログラムが動作していないか、ネットワークの問題によってデータベース メールから SMTP サーバーへの接続に障害が発生している可能性があります。 送信されていないメッセージの多くが同じ profile_idを持っている場合は、SMTP サーバーに問題がある可能性があります。 プロファイルにアカウントを追加することを検討してください。 メッセージが送信されているが、メッセージがキューに多くの時間を費やしている場合は、SQL Server必要なメッセージの量を処理するためにさらに多くのリソースが必要になる場合があります。

アクセス許可

sysadmin 固定サーバー ロールと DatabaseMailUserRole データベース ロールに付与されます。 sysadmin 固定サーバー ロールのメンバーによって実行されると、このビューには、未送信または再試行中のすべてのメッセージが表示されます。 他のすべてのユーザーには、送信 された未送信 または 再試行中の メッセージのみが表示されます。