Share via


sysmail_unsentitems (Transact-SQL)

針對每個未傳送正在重試狀態的 Database Mail 訊息,各包含一個資料列。未傳送或正在重試狀態的訊息仍存在郵件佇列中,隨時可能傳送。訊息可能由於下列原因而具有未傳送狀態:

  • 訊息是新的,雖然訊息已置於郵件佇列中,但 Database Mail 正在處理其他訊息而尚未到達這則訊息。

  • Database Mail 外部程式未執行,且未傳送郵件。

訊息可能由於下列原因而具有正在重試狀態:

  • Database Mail 已嘗試傳送郵件,但無法連絡 SMTP 郵件伺服器。Database Mail 會使用指派給傳送訊息之設定檔的其他 Database Mail 帳戶,繼續嘗試傳送訊息。如果沒有帳戶可以傳送郵件,Database Mail 會等候為帳戶重試延遲參數設定的時間長度,然後再嘗試傳送訊息。Database Mail 使用帳戶重試延遲參數來決定嘗試傳送訊息的次數。只要 Database Mail 正在嘗試傳送訊息,訊息就會保留在正在重試狀態。

若要查看等候傳送的訊息數和其於郵件佇列中停留的時間,請使用這份檢視。通常未傳送訊息的數目很少。在正常作業期間進行基準測試,可判斷作業之訊息佇列中的合理訊息數。

若要查看 Database Mail 處理的所有訊息,請使用 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)

訊息副本收件者的電子郵件地址。

blind_copy_recipients

varchar(max)

名稱未顯示於訊息標頭之訊息副本收件者的電子郵件地址。

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 表示如果查詢中有錯誤,則 Database Mail 不應傳送電子郵件訊息。

send_request_date

datetime

訊息置於郵件佇列的日期和時間。

send_request_user

sysname

提交訊息的使用者。這是 Database Mail 程序的使用者內容,不是訊息的寄件者欄位。

sent_account_id

int

用來傳送訊息之 Database Mail 帳戶的識別碼。針對這個檢視一律為 NULL。

sent_status

varchar(8)

如果 Database Mail 未嘗試傳送郵件,則會是未傳送。如果 Database Mail 傳送訊息失敗但正在重試,則會是正在重試

sent_date

datetime

Database Mail 上次嘗試傳送郵件的日期和時間。如果 Database Mail 未嘗試傳送訊息,則是 NULL。

last_mod_date

datetime

資料列上次修改的日期和時間。

last_mod_user

sysname

上次修改資料列的使用者。

備註

對 Database Mail 進行疑難排解時,這個檢視可藉顯示等候傳送的訊息數和訊息已等候的時間量,來幫助您識別問題的本質。如果未傳送任何訊息,Database Mail 外部程式可能不在執行中,或者可能有使 Database Mail 無法連絡 SMTP 伺服器的網路問題。如果很多未傳送訊息具有相同的 profile_id,表示 SMTP 伺服器可能有問題。請考慮將其他帳戶加入設定檔中。如果正在傳送訊息,但訊息耗費太多時間在佇列中,SQL Server 可能需要更多資源來處理需要的訊息量。

權限

授與系統管理員 (sysadmin) 固定伺服器角色和 DatabaseMailUserRole 資料庫角色。由系統管理員 (sysadmin) 固定伺服器角色的成員執行時,這份檢視會顯示所有未傳送正在重試的訊息。所有其他使用者只看得到他們所提交的未傳送正在重試訊息。

請參閱

工作