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.
Verificare che il Service Broker sia abilitato per msdb
La funzione di posta elettronica del database richiede che il Service Broker sia abilitato per il database msdb.
In SQL Server Management Studio connettersi a un'istanza di SQL Server usando una finestra dell'editor di query. Verificare se Service Broker è abilitato su
msdbcon lo script T-SQL seguente:SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ; -- should be 1- Se abilitata, continuare a Verificare che posta elettronica database sia abilitata e Verificare che posta elettronica database sia stata avviata.
- Se non lo è, il Service Broker deve essere abilitato.
Lo script di esempio seguente richiede l'accesso esclusivo ai
msdbdatabase di sistema, pertanto ciò potrebbe non essere fattibile per l'esecuzione durante l'orario di ufficio tipico.Arrestare il servizio SQL Server Agent in modo che Service Broker possa ottenere il blocco necessario.
Eseguire quanto segue per abilitare Service Broker in
msdb. Per altre informazioni, vedere ALTER DATABASE ... SET ENABLE_BROKER.ALTER DATABASE msdb SET ENABLE_BROKER;Riavviare il servizio SQL Server Agent.
Verificare che la posta elettronica del database sia abilitata
In SQL Server Management Studio connettersi a un'istanza di SQL Server usando una finestra dell'editor di query. Verificare che posta elettronica database sia abilitata con il codice seguente:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure; GONel riquadro dei risultati, verificare che l'opzione di configurazione del server
run_valueper Database Posta elettronica XPs (opzione di configurazione del server) sia impostata su1.- Se il
run_valueè1, continuare a verificare che la posta del database sia avviata. - Se
run_valuenon è1, la Posta Elettronica del Database non è abilitata.
Database Mail non è abilitato automaticamente per ridurre il numero di funzionalità disponibili per un attacco da parte di un utente malintenzionato. Per ulteriori informazioni, vedere Configurazione dell'area superficiale.
- Se il
Se si decide che è opportuno abilitare Database Mail, eseguire il codice seguente:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure 'Database Mail XPs', 1; GO RECONFIGURE; GOPer ripristinare lo stato predefinito della
sp_configureroutine, che non mostra le opzioni avanzate, eseguire il codice seguente:sp_configure 'show advanced', 0; GO RECONFIGURE; GO
Verificare che la posta elettronica del database sia stata avviata
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.
In SQL Server Management Studio connettersi a un'istanza di SQL Server usando una finestra dell'editor di query. Per verificare che il programma esterno Posta elettronica database sia avviato, eseguire l'istruzione seguente:
EXEC msdb.dbo.sysmail_help_status_sp;Se lo stato del Database Mail non è
STARTED, 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
lengthcolonna nel set di risultati disysmail_help_queue_spper determinare il numero di messaggi di posta elettronica nella coda di posta.
Gli utenti sono configurati correttamente per l'invio di messaggi 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 ruolomsdbdb_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.
I problemi interessano 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 non funzionante non utilizza nessuno 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
Database Mail considera i messaggi 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. Avvia la Configurazione guidata per la Posta elettronica del database e seleziona l'opzione Visualizza o modifica i parametri di sistema. In alternativa, è possibile associare più account al profilo in modo che in caso di failover dall'account principale, venga utilizzato l'account di failover per inviare le e-mail.
Nella pagina Configurazione parametri di sistema, i valori predefiniti di cinque volte per i Tentativi di ripetizione account e 60 secondi per il Ritardo tentativi account indicano che il recapito dei messaggi avrà esito negativo se il server SMTP non può essere raggiunto 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.
Contenuti correlati
- Oggetti di configurazione di Database Mail
- Oggetti di messaggistica di posta elettronica del database
- Programma esterno per la posta elettronica del database
- Registrazione e controlli di Posta Database
- Configurazione di SQL Server Agent
- Configurare la posta elettronica di SQL Server Agent per utilizzare Database Mail