Condividi tramite


Risoluzione dei problemi relativi a Posta elettronica database: Posta elettronica accodata, nessuna voce in sysmail_event_log o nel registro eventi applicazioni di Windows

In questo argomento è descritta la procedura da applicare nel caso in cui messaggi di posta elettronica vengano accodati correttamente, ma nella vista sysmail_event_log o nel registro eventi applicazioni di Windows non sia visualizzata alcuna attività dal programma esterno.

Posta elettronica database si basa su Service Broker per l'accodamento dei messaggi di posta elettronica. Se l'esecuzione di Posta elettronica database viene interrotta o se il recapito dei messaggi di Service Broker non è attivo sul database msdb, Posta elettronica database accoda il database dei messaggi ma non è in grado di recapitare i messaggi. In tal caso, i messaggi di Service Broker restano nella coda della posta elettronica di Service Broker. Service Broker non attiva il programma esterno, quindi non ci sono voci di log in sysmail_event_log né aggiornamenti allo stato dell'elemento in sysmail_allitems e nelle viste correlate.

Eseguire l'istruzione seguente per verificare se Posta elettronica database è attivato:

SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb';

Un valore 0 indica che il recapito dei messaggi di Service Broker non è attivo nel database msdb. Per correggere il problema, attivare Service Broker nel database. Per informazioni sull'attivazione del recapito dei messaggi di Service Broker, vedere Procedura: Attivazione del recapito dei messaggi di Service Broker nei database (Transact-SQL).

Posta elettronica database si basa su varie stored procedure interne. Per ridurre la superficie di attacco, queste stored procedure sono disattivate in caso di nuova installazione di SQL Server. Per abilitare queste stored procedure, utilizzare l'opzione Database Mail XPs della stored procedure di sistema sp_configure.

L'esecuzione di Posta elettronica database potrebbe venire interrotta nel database msdb. Per verificare lo stato di Posta elettronica database, eseguire l'istruzione seguente:

EXECUTE dbo.sysmail_help_status_sp;

Per avviare Posta elettronica database in un database host della posta elettronica, eseguire il comando seguente nel database msdb:

EXECUTE dbo.sysmail_start_sp;

Service Broker esamina la durata della finestra di dialogo per i messaggi all'attivazione. Pertanto, eventuali messaggi rimasti nella coda di trasmissione di Service Broker più a lungo della durata della finestra di dialogo generano immediatamente un errore . Posta elettronica database aggiorna lo stato dei messaggi non riusciti nella tabella sysmail_allitems e nelle viste correlate. È necessario che l'utente decida se ripetere l'invio dei messaggi di posta elettronica. Per ulteriori informazioni sulla configurazione della durata della finestra di dialogo utilizzata da Posta elettronica database, vedere sysmail_configure_sp (Transact-SQL).