Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Istanza gestita di SQL di Azure
Per risolvere i problemi relativi a Posta elettronica database, è necessario controllare le aree generali seguenti del sistema di Posta elettronica database. Queste procedure vengono indicate in ordine logico, ma possono essere completate in qualsiasi sequenza.
Autorizzazioni
Devi essere un membro del ruolo server fisso sysadmin per risolvere tutti gli aspetti di Database Mail. Gli utenti che non sono membri del ruolo predefinito del server sysadmin possono ottenere informazioni solo sui messaggi di posta elettronica che tentano di inviare, non sui messaggi di posta elettronica inviati da altri utenti.
Posta elettronica database è abilitato
In SQL Server Management Studio connettersi a un'istanza di SQL Server usando una finestra dell'editor di query e quindi eseguire il codice seguente:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure; GO
Nel riquadro dei risultati, verificare che l'opzione di configurazione del server
run_value
per Database Posta elettronica XPs (opzione di configurazione del server) sia impostata su1
.Se
run_value
non è1
, la Posta Elettronica del Database non è abilitata.Tale caratteristica non è abilitata automaticamente per ridurre il numero di caratteristiche che potrebbero essere soggette a un attacco da parte di un utente malintenzionato. Per ulteriori informazioni, vedere Configurazione dell'area superficiale.
Se si decide che l'abilitazione di Posta elettronica database non comporta alcun problema, eseguire il codice seguente:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure 'Database Mail XPs', 1; GO RECONFIGURE; GO
Per ripristinare lo stato predefinito della
sp_configure
routine, che non mostra le opzioni avanzate, eseguire il codice seguente:sp_configure 'show advanced', 0; GO RECONFIGURE; GO
Gli utenti sono configurati correttamente per l'invio di posta elettronica
Per inviare Posta elettronica database, è necessario essere un membro del ruolo del database DatabaseMailUserRole nel database
msdb
. I membri del ruolo predefinito del server sysadmin e del ruolomsdb
db_owner appartengono automaticamente anche al ruolo DatabaseMailUserRole. Per elencare tutti gli altri membri di DatabaseMailUserRole, eseguire l'istruzione seguente:EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole';
Per aggiungere utenti al ruolo DatabaseMailUserRole, usare l'istruzione seguente:
USE msdb; GO sp_addrolemember @rolename = 'DatabaseMailUserRole' ,@membername = '<database user>';
Per poter inviare messaggi di Posta elettronica database, gli utenti devono avere accesso ad almeno un profilo di Posta elettronica database. Per elencare gli utenti (entità) e i profili a cui hanno accesso, eseguire l'istruzione seguente.
EXEC msdb.dbo.sysmail_help_principalprofile_sp;
Utilizzare la Procedura guidata di configurazione per Posta elettronica del database per creare profili e concedere l'accesso ai profili agli utenti.
Posta elettronica database è avviato
Il programma esterno Posta elettronica database viene attivato quando sono presenti messaggi di posta elettronica da elaborare. In assenza di messaggi da inviare per il periodo di timeout specificato, il programma viene chiuso.
Per verificare che Posta elettronica database sia stato avviato, eseguire l'istruzione seguente.
EXEC msdb.dbo.sysmail_help_status_sp;
Se il programma esterno Posta elettronica database non è in esecuzione, eseguire l'istruzione seguente per avviarlo:
EXEC msdb.dbo.sysmail_start_sp;
Se il programma esterno Posta elettronica database è in esecuzione, eseguire l'istruzione seguente per controllare lo stato della coda della posta:
EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail';
Lo stato della coda della posta dovrebbe essere
RECEIVES_OCCURRING
. La coda di stato potrebbe variare di momento in momento. Se lo stato della coda di posta elettronica non èRECEIVES_OCCURRING
, provare a riavviare la coda. Arrestare la coda mediante l'istruzione seguente:EXEC msdb.dbo.sysmail_stop_sp;
Avviare quindi la coda mediante l'istruzione seguente:
EXEC msdb.dbo.sysmail_start_sp;
Nota
Utilizzare la
length
colonna nel set di risultati disysmail_help_queue_sp
per determinare il numero di messaggi di posta elettronica nella coda di posta.
I problemi influiscono su alcuni o tutti gli account
Se si è determinato che alcuni ma non tutti i profili possono inviare messaggi di posta elettronica, è possibile che si verifichino problemi con gli account di Posta elettronica database usati dai profili di problema.
Per verificare quali account possono inviare posta, eseguire l'istruzione seguente:
SELECT sent_account_id, sent_date FROM msdb.dbo.sysmail_sentitems;
Se un profilo che crea problemi non usa alcuno degli account elencati, è possibile che tutti gli account disponibili per tale profilo non funzionino correttamente. Per verificare i singoli account, usare la Configurazione guidata Posta elettronica database per creare un nuovo profilo con un singolo account e quindi provare a inviare un messaggio usando il nuovo account dalla finestra di dialogo Invia messaggio di prova.
Per visualizzare i messaggi di errore restituiti da Posta elettronica database, eseguire l'istruzione seguente:
SELECT * FROM msdb.dbo.sysmail_event_log;
Nota
Posta elettronica database contrassegna i messaggi come inviati quando sono stati recapitati correttamente a un server di posta elettronica SMTP. Il recapito dei messaggi può essere impedito anche da successivi errori, ad esempio un indirizzo di posta elettronica errato per un destinatario, che tuttavia non vengono registrati nel log di Posta elettronica database.
Nuovi tentativi di recapito della posta elettronica
Se si è determinato che Posta elettronica database ha esito negativo perché il server SMTP non può essere raggiunto in modo affidabile, è possibile aumentare la frequenza di recapito della posta aumentando il numero di tentativi di invio di ogni messaggio da parte di Posta elettronica database. Avviare la Configurazione guidata Posta elettronica database e selezionare l'opzione Visualizza o modifica i parametri di sistema. In alternativa, è possibile associare più account al profilo in modo che in caso di errore di recapito con l'account principale sia possibile utilizzare l'account di failover per l'invio dei messaggi di posta elettronica.
Nella pagina Configurazione parametri di sistema i valori predefiniti pari a 60 volte per Tentativi account e cinque per Ritardo tentativi account indicano che il recapito dei messaggi avrà esito negativo se non è possibile contattare il server SMTP entro 5 minuti. Impostare un valore più alto per questi parametri per aumentare il periodo di tempo che deve trascorrere prima che il recapito dei messaggi abbia esito negativo.
Nota
Quando viene inviato un numero elevato di messaggi, i valori predefiniti di grandi dimensioni potrebbero aumentare l'affidabilità, ma aumenteranno notevolmente l'uso delle risorse, poiché si tenta di recapitare più messaggi e più volte. Affrontare il problema alla radice risolvendo l'errore di rete o del server SMTP che impedisce a Posta elettronica database di contattare tempestivamente il server SMTP.
Verificare che il Service Broker sia abilitato per msdb
Posta elettronica database richiede che Service Broker sia abilitato per il database msdb
. Verificare se Service Broker è abilitato su msdb
con lo script T-SQL seguente:
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ; -- should be 1
Se non lo è, il Service Broker deve essere abilitato. Lo script di esempio seguente richiede l'accesso esclusivo ai msdb
database di sistema, pertanto ciò potrebbe non essere fattibile per l'esecuzione durante l'orario di ufficio tipico. Per altre informazioni, vedere ALTER DATABASE ... SET ENABLE_BROKER.
ALTER DATABASE msdb SET ENABLE_BROKER;
Contenuti correlati
- Oggetti di configurazione di Posta elettronica database
- Oggetti di messaggistica di Posta elettronica database
- Programma esterno di Posta elettronica database
- Controlli e registrazione di Posta elettronica database
- Configurazione di SQL Server Agent
- Configurare la posta elettronica di SQL Server Agent per utilizzare Database Mail