Share via


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)

メッセージの本文の書式。可能な値は TEXTHTML です。

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 メッセージだけを確認できます。