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) | メッセージの本文形式。 指定できる値は、 TEXT と HTML です。 |
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 メッセージが表示されます。 他のすべてのユーザーには、送信したまたはメッセージのみが表示されます。