sysmail_unsentitems (Transact-SQL)
Contiene una riga per ogni messaggio di Posta elettronica database il cui stato è unsent o retrying. I messaggi con uno di questi due stati si trovano ancora nella coda della posta e potrebbero essere inviati in qualsiasi momento. Lo stato di un messaggio può essere unsent per i motivi seguenti:
Il messaggio è nuovo e, anche se è stato inserito nella coda della posta, non è ancora stato elaborato da Posta elettronica database che sta inviando altri messaggi.
Il programma esterno Posta elettronica database non è in esecuzione e attualmente la posta non viene inviata.
Lo stato di un messaggio può essere retrying per i motivi seguenti:
- Posta elettronica database ha tentato di inviare il messaggio, ma non è stato possibile contattare il server di posta elettronica SMTP. Posta elettronica database continuerà a tentare di inviare il messaggio utilizzando altri account di Posta elettronica database assegnati al profilo che ha inviato il messaggio. Se nessun account è in grado di inviare il messaggio, Posta elettronica database attenderà che trascorra il periodo di tempo indicato nel parametro Ritardo tentativi account e quindi eseguirà un nuovo tentativo di invio. Posta elettronica database utilizza il parametro Tentativi account per determinare il numero di tentativi di invio da eseguire. Lo stato retrying viene mantenuto fino a quando Posta elettronica database tenta di inviare il messaggio.
Utilizzare questa vista quando si desidera controllare il numero di messaggi in attesa di essere inviati e da quanto tempo sono presenti nella coda della posta. In genere, il numero di messaggi unsent è basso. Eseguire un test di benchmark durante il normale funzionamento per determinare il numero ragionevole di messaggi che può essere presente nella coda in condizioni di lavoro regolari.
Per visualizzare tutti i messaggi elaborati da Posta elettronica database, utilizzare sysmail_allitems (Transact-SQL). Per visualizzare solo i messaggi che non è stato possibile inviare, utilizzare sysmail_faileditems (Transact-SQL). Per visualizzare solo i messaggi inviati, utilizzare sysmail_sentitems (Transact-SQL).
Nome colonna |
Tipo di dati |
Descrizione |
---|---|---|
mailitem_id |
int |
Identificatore dell'elemento di posta nella coda della posta. |
profile_id |
int |
Identificatore del profilo utilizzato per l'invio del messaggio. |
recipients |
varchar(max) |
Indirizzi di posta elettronica dei destinatari del messaggio. |
copy_recipients |
varchar(max) |
Indirizzi di posta elettronica degli utenti che ricevono una copia del messaggio. |
blind_copy_recipients |
varchar(max) |
Indirizzi di posta elettronica degli utenti che ricevono una copia del messaggio, ma i cui nomi non sono indicati nell'intestazione del messaggio. |
subject |
nvarchar(510) |
Oggetto del messaggio. |
body |
varchar(max) |
Corpo del messaggio. |
body_format |
varchar(20) |
Formato del corpo del messaggio. I possibili valori sono TEXT e HTML. |
importance |
varchar(6) |
Parametro importance del messaggio. |
sensitivity |
varchar(12) |
Parametro sensitivity del messaggio. |
file_attachments |
varchar(max) |
Elenco delimitato da punti e virgola dei nomi dei file allegati al messaggio di posta elettronica. |
attachment_encoding |
varchar(20) |
Tipo di allegato del messaggio di posta elettronica. |
query |
varchar(max) |
Query eseguita dal programma di posta elettronica. |
execute_query_database |
sysname |
Contesto di database all'interno del quale il programma di posta elettronica ha eseguito la query. |
attach_query_result_as_file |
bit |
Quando il valore è 0, i risultati della query sono inclusi nel corpo del messaggio di posta elettronica, dopo il contenuto del corpo. Quando il valore è 1, i risultati sono restituiti come file allegato. |
query_result_header |
bit |
Quando il valore è 1, i risultati della query includono le intestazioni di colonna. Quando il valore è 0, i risultati della query non includono le intestazioni di colonna. |
query_result_width |
int |
Parametro query_result_width del messaggio. |
query_result_separator |
char(1) |
Carattere utilizzato per separare le colonne nell'output della query. |
exclude_query_output |
bit |
Parametro exclude_query_output del messaggio. Per ulteriori informazioni, vedere sp_send_dbmail (Transact-SQL). |
append_query_error |
bit |
Parametro append_query_error del messaggio. 0 indica che Posta elettronica database non deve inviare il messaggio di posta elettronica se la query contiene un errore. |
send_request_date |
datetime |
Data e ora di inserimento del messaggio nella coda della posta. |
send_request_user |
sysname |
Utente che ha inviato il messaggio. Corrisponde al contesto utente della procedura di Posta elettronica database e non al campo Da del messaggio. |
sent_account_id |
int |
Identificatore dell'account di Posta elettronica database utilizzato per l'invio del messaggio. Per questa vista è sempre NULL. |
sent_status |
varchar(8) |
Se il programma Posta elettronica database non ha tentato di inviare il messaggio, il valore di questo parametro è unsent. Se il programma Posta elettronica database non è riuscito a inviare il messaggio ed è in corso un altro tentativo di invio, il valore di questo parametro è retrying. |
sent_date |
datetime |
Data e ora dell'ultimo tentativo di invio del messaggio. Se Posta elettronica database non ha tentato di inviare il messaggio, il valore di questo parametro è NULL. |
last_mod_date |
datetime |
Data e ora dell'ultima modifica della riga. |
last_mod_user |
sysname |
Autore dell'ultima modifica della riga. |
Osservazioni
Quando si risolvono i problemi relativi a Posta elettronica database, questa vista può consentire di identificare la natura del problema in quanto indica il numero di messaggi in attesa di essere inviati e il tempo di attesa nella coda. Se nessun messaggio viene inviato, è possibile che il programma esterno Posta elettronica database non sia in esecuzione oppure che esista un problema di rete che impedisce a Posta elettronica database di contattare i server SMTP. Se molti dei messaggi non inviati hanno lo stesso profile_id, è possibile che esista un problema con il server SMTP. Considerare l'opportunità di aggiungere altri account al profilo. Se i messaggi vengono inviati ma il tempo di attesa nella coda è eccessivo, è possibile che SQL Server necessiti di un maggior numero di risorse per l'elaborazione del volume di messaggi scambiati.
Autorizzazioni
Le autorizzazioni necessarie vengono concesse al ruolo predefinito del server sysadmin e al ruolo del database DatabaseMailUserRole. Quando viene utilizzata da un membro del ruolo predefinito del server sysadmin, questa vista indica tutti i messaggi il cui stato è unsent o retrying. Tutti gli altri utenti vedono semplicemente i messaggi con stato unsent o retrying che hanno cercato di inviare personalmente.