sysmail_unsentitems (Transact-SQL)
状態が unsent または retrying のデータベース メール メッセージごとに 1 行のデータを格納します。 状態が unsent または retrying のメッセージは、メール キューに残っており、いつでも送信される可能性があります。 メッセージの状態が unsent になるには次の理由があります。
メッセージが新しく、メール キューに挿入されていても、データベース メールが他のメッセージの処理中でこのメッセージに達していない。
データベース メール外部プログラムが実行されておらず、メールが送信されていない
メッセージの状態が retrying になるには次の理由があります。
- データベース メールでメッセージの送信が試行されたが、SMTP メール サーバーに接続できなかった。 この場合、データベース メールでは、メッセージを送信したプロファイルに割り当てられている他のデータベース メール アカウントを使用して、メッセージの送信が引き続き試行されます。 どのアカウントでもメールを送信できない場合、データベース メールは Account Retry Delay パラメーターで設定された時間に従って待機した後、メッセージの送信を再試行します。 データベース メールでは、Account Retry Attempts パラメーターによって、メッセージの送信試行回数が決定されます。 データベース メールでメッセージの送信が試行されている限り、メッセージは retrying の状態を維持します。
このビューは、送信待ちメッセージの数と、それらのメール キューでの待機時間を確認する場合に使用できます。 通常、unsent メッセージの数はそれほど多くありません。 通常の運用中にベンチマーク テストを行って、その運用に適切な、メッセージ キュー内のメッセージの数を判断してください。
データベース メールで処理されたすべてのメッセージを確認するには、sysmail_allitems (Transact-SQL) を使用します。 状態が失敗となっているメッセージだけを確認するには、sysmail_faileditems (Transact-SQL) を使用します。 送信済みのメッセージだけを確認するには、sysmail_sentitems (Transact-SQL) を使用します。
列名 |
データ型 |
説明 |
---|---|---|
mailitem_id |
int |
メール キュー内のメール アイテムの識別子。 |
profile_id |
int |
メッセージの送信に使用されたプロファイルの識別子。 |
recipients |
varchar(max) |
メッセージ受信者の電子メール アドレス。 |
copy_recipients |
varchar(max) |
CC としてメッセージのコピーを受け取る受信者の電子メール アドレス。 |
blind_copy_recipients |
varchar(max) |
BCC としてメッセージのコピーを受け取る受信者の電子メール アドレス。この受信者の名前は、メッセージ ヘッダーには表示されません。 |
subject |
nvarchar(510) |
メッセージの件名。 |
body |
varchar(max) |
メッセージの本文。 |
body_format |
varchar(20) |
メッセージの本文の書式。 可能な値は TEXT と HTML です。 |
importance |
varchar(6) |
メッセージの importance パラメーター。 |
sensitivity |
varchar(12) |
メッセージの sensitivity パラメーター。 |
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) |
データベース メールでメールの送信が試行されていない場合は unsent。 データベース メールでメールの送信が失敗し、再試行されている場合は retrying。 |
sent_date |
datetime |
データベース メールでメールの送信が試行された日時。 データベース メールでメッセージの送信が試行されていない場合は NULL になります。 |
last_mod_date |
datetime |
行が最後に変更された日時。 |
last_mod_user |
sysname |
行を最後に変更したユーザー。 |
説明
データベース メールのトラブルシューティングを行うとき、このビューでは送信済みのメッセージ数とメッセージの待機時間を確認できるので、問題の性質を特定するのに役立ちます。 メッセージが 1 つも送信されていない場合は、データベース メール外部プログラムが動作していないか、ネットワークの問題によってデータベース メールから SMTP サーバーへの接続に障害が発生している可能性があります。 未送信のメッセージの多くが同じ profile_id の場合は、SMTP サーバーに問題がある可能性があります。 この場合は、プロファイルへのアカウントの追加を検討してください。 メッセージが送信されていても、キューでの待機時間が長すぎる場合は、要求されるメッセージ量を処理するために、SQL Server でより多くのリソースが必要であることが考えられます。
権限
sysadmin 固定サーバー ロールおよび DatabaseMailUserRole データベース ロールが与えられている必要があります。 sysadmin 固定サーバー ロールのメンバーとして実行した場合、このビューには unsent または retrying メッセージがすべて表示されます。 その他のユーザーの場合は、自分が送信した unsent または retrying メッセージだけを確認できます。