sysmail_unsentitems (Transact-SQL)
適用対象:SQL ServerAzure SQL Managed Instance
未送信または再試行中の状態のデータベース メールメッセージごとに 1 行が含まれます。 未送信または再試行中の状態のメッセージはメール キューに残り、いつでも送信できます。 メッセージには、次の理由で 未送信 の状態が表示される場合があります。
メッセージが新しく、メール キューに挿入されていても、データベース メールが他のメッセージの処理中でこのメッセージに達していない。
データベース メール外部プログラムが実行されておらず、メールが送信されていない
メッセージの 再試行 状態は、次の理由で発生する可能性があります。
- データベース メールでメッセージの送信が試行されたが、SMTP メール サーバーに接続できなかった。 データベース メールは、メッセージを送信したプロファイルに割り当てられている他のデータベース メールアカウントを使用してメッセージの送信を試みます。 アカウントがメールを送信できない場合、データベース メールはアカウント再試行遅延パラメーターに対して構成された時間の長さを待ってから、メッセージの再送信を試みます。 データベース メールは、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 パラメーター。 |
sensitivity | varchar(12) | メッセージの 秘密度 パラメーター。 |
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) | データベース メールがメールの送信を試みなかった場合は、未送信になります。 データベース メールがメッセージの送信に失敗したが、もう一度試行している場合は再試行されます。 |
sent_date | datetime | データベース メールが最後にメールを送信しようとした日時。 データベース メールでメッセージの送信が試行されていない場合は NULL になります。 |
last_mod_date | datetime | 行の最後の変更の日時。 |
last_mod_user | sysname | 行を最後に変更したユーザー。 |
注釈
データベース メールのトラブルシューティングを行うとき、このビューでは送信済みのメッセージ数とメッセージの待機時間を確認できるので、問題の性質を特定するのに役立ちます。 メッセージが 1 つも送信されていない場合は、データベース メール外部プログラムが動作していないか、ネットワークの問題によってデータベース メールから SMTP サーバーへの接続に障害が発生している可能性があります。 送信されていないメッセージの多くが同じ profile_idを持っている場合は、SMTP サーバーに問題がある可能性があります。 プロファイルにアカウントを追加することを検討してください。 メッセージが送信されているが、メッセージがキューに多くの時間を費やしている場合は、SQL Server必要なメッセージの量を処理するためにさらに多くのリソースが必要になる場合があります。
アクセス許可
sysadmin 固定サーバー ロールと DatabaseMailUserRole データベース ロールに付与されます。 sysadmin 固定サーバー ロールのメンバーによって実行されると、このビューには、未送信または再試行中のすべてのメッセージが表示されます。 他のすべてのユーザーには、送信 された未送信 または 再試行中の メッセージのみが表示されます。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示