Condividi tramite


Risoluzione dei problemi relativi a Posta elettronica database: passaggi generali

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.

Per verificare se Posta elettronica database è abilitato

  1. In SQL Server Management Studio connettersi a un'istanza di SQL Server utilizzando una finestra dell'editor di query, quindi eseguire il codice seguente:

    sp_configure 'show advanced', 1; 
    GO
    RECONFIGURE;
    GO
    sp_configure;
    GO
    

    Nel riquadro dei risultati verificare che run_value per Database Mail XPs sia impostato su 1.

    Se il valore di run_value non è 1, la funzionalità Posta elettronica database non è abilitata. Tale funzionalità non è abilitata automaticamente per ridurre il numero di funzionalità che potrebbero essere soggette a un attacco da parte di un utente malintenzionato. Per ulteriori informazioni, vedere Informazioni su Configurazione superficie di attacco.

  2. Se si decide che l'abilitazione di Posta elettronica database non comporta alcun problema, eseguire il codice seguente:

    sp_configure 'Database Mail XPs', 1; 
    GO
    RECONFIGURE;
    GO
    
  3. Per ripristinare la procedura sp_configure in base allo stato predefinito, in cui non sono presenti opzioni avanzate, eseguire il codice seguente:

    sp_configure 'show advanced', 0; 
    GO
    RECONFIGURE;
    GO
    

Per verificare se gli utenti sono configurati correttamente per l'invio di messaggi di Posta elettronica database

  1. Per poter inviare messaggi di Posta elettronica database, gli utenti devono essere membri di DatabaseMailUserRole. I membri del ruolo predefinito del server sysadmin e del ruolo di msdbdb_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';
    
  2. Per aggiungere utenti al ruolo DatabaseMailUserRole, utilizzare l'istruzione seguente:

    sp_addrolemember @rolename = 'DatabaseMailUserRole'
       ,@membername = '<database user>';
    
  3. 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;
    
  4. Utilizzare la Configurazione guidata posta elettronica database per creare profili e consentire agli utenti di accedervi.

Per verificare che Posta elettronica database sia avviato

  1. Il programma esterno Posta elettronica database viene attivato quando sono presenti messaggi di posta elettronica da elaborare. Se entro il periodo di timeout specificato non è necessario inviare alcun messaggio, il programma viene chiuso. Per verificare che Posta elettronica database sia in esecuzione, eseguire l'istruzione seguente.

    EXEC msdb.dbo.sysmail_help_status_sp;
    
  2. Se il programma esterno Posta elettronica database non è in esecuzione, eseguire l'istruzione seguente per avviarlo:

    EXEC msdb.dbo.sysmail_start_sp;
    
  3. 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 dello stato può variare da un momento all'altro. Se lo stato della coda della posta non è RECEIVES_OCCURRING, provare a interrompere la coda utilizzando sysmail_stop_sp e quindi a riavviarla utilizzando sysmail_start_sp.

Nota

Utilizzare la colonna length del set di risultati di sysmail_help_queue_sp per verificare il numero di messaggi di posta elettronica nella coda della posta.

Per verificare se i problemi relativi a Posta elettronica database hanno effetto su tutti gli account di un profilo o solo su alcuni account

  1. Se si è appurato che solo alcuni profili possono inviare posta, è possibile che esistano problemi con gli account di Posta elettronica database utilizzati dai profili che non riescono a inviare messaggi. Per verificare quali account possono inviare posta, eseguire l'istruzione seguente:

    SELECT sent_account_id, sent_date FROM msdb.dbo.sysmail_sentitems;
    
  2. Se un profilo che crea problemi non utilizza alcuno degli account elencati, è possibile che tutti gli account disponibili per tale profilo non funzionino correttamente. Per verificare i singoli account, utilizzare la Configurazione guidata posta elettronica database per creare un nuovo profilo con un singolo account e quindi provare a inviare un messaggio utilizzando il nuovo account dalla finestra di dialogo Invia messaggio di prova.

  3. 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.

Per configurare Posta elettronica database per successivi tentativi di recapito della posta

  1. Se si è appurato che gli errori di Posta elettronica database sono dovuti a problemi di contatto del server SMTP, potrebbe essere possibile migliorare la frequenza di recapito aumentando il numero di tentativi eseguiti da Posta elettronica database per l'invio di ogni messaggio. 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.

  2. Nella pagina Configurazione parametri di sistema i valori predefiniti pari a 5 volte per Tentativi account e 60 secondi 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 se si desidera aumentare il periodo di tempo che deve trascorrere prima che il recapito dei messaggi abbia esito negativo.

Nota

Se la quantità di messaggi inviata è notevole, l'impostazione di valori predefiniti elevati può consentire di aumentare l'affidabilità, ma comporta un aumento sostanziale dell'utilizzo delle risorse a causa dei ripetuti tentativi di invio per numerosi messaggi. 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.

Protezione

È necessario essere membri del ruolo predefinito del server sysadmin per risolvere i problemi correlati a tutti gli aspetti di Posta elettronica database. 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 personalmente e non su quelli inviati da altri utenti.