Condividi tramite


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.