次の方法で共有


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