次の方法で共有


sysmail_unsentitems (Transact-SQL)

適用対象: SQL Server Azure SQL Managed Instance

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

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

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

メッセージには、次の理由により、 retrying 状態が含まれる場合があります。

  • データベース メールでメッセージの送信が試行されたが、SMTP メール サーバーに接続できなかった。 データベース メールは、メッセージを送信したプロファイルに割り当てられている他のデータベース メール アカウントを使用して、メッセージの送信を試みます。 アカウントがメールを送信できない場合、データベース メールは Account Retry Delay パラメーターに対して構成された時間の長さを待機し、メッセージの再送信を試みます。 データベース メールはを使用します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 パラメーター。
感度 varchar(12) メッセージの センシティビティ パラメーター。
file_attachments varchar(max) 電子メール メッセージに添付されたファイル名の、セミコロン区切りの一覧。
attachment_encoding varchar(20) メールの添付ファイルの種類。
クエリ 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 メッセージを送信したユーザー。 これは、メッセージの From フィールドではなく、データベース メール プロシージャのユーザー コンテキストです。
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固定サーバー ロールのメンバーによって実行されると、このビューには、すべてのunsentまたはretrying メッセージが表示されます。 他のすべてのユーザーには、送信したまたはメッセージのみが表示されます。