Se stai tentando di inviare e-mail utilizzando Posta database in SQL Server, ma l'invio non riesce, puoi controllare il sysmail_event_log
visualizza per vedere il motivo per cui non è riuscito.
Il sysmail_event_log
view restituisce una riga per ogni messaggio di Windows o SQL Server restituito dal sistema di posta elettronica database. Per "messaggio", non intendo il messaggio di posta effettivo. Intendo un messaggio come il messaggio di errore che spiega perché la posta non è riuscita.
Puoi anche usare sysmail_configure_sp
stored procedure per determinare quali tipi di messaggi vengono registrati.
Esempio
Ecco un esempio per dimostrare come utilizzare sysmail_event_log
per restituire tutti i messaggi.
SELECT * FROM msdb.dbo.sysmail_event_log;
Sul mio sistema questo restituisce troppi dati da mostrare qui, ma qui è di nuovo per mostrare un messaggio che è stato restituito.
SELECT *
FROM msdb.dbo.sysmail_event_log
WHERE log_id = 2;
Risultato (usando l'output verticale):
log_id | 2 event_type | error log_date | 2020-08-24 02:40:53.317 description | The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 1 (2020-08-24T02:40:52). Exception Message: Could not connect to mail server. (No connection could be made because the target machine actively refused it 127.0.0.1:25).) process_id | 68 mailitem_id | 1 account_id | NULL last_mod_date | 2020-08-24 02:40:53.317 last_mod_user | sa
Ho usato l'output verticale in questo esempio in modo da non dover scorrere lateralmente.
Verifica il tuo livello di registrazione
Puoi usare il sysmail_help_configure_sp
stored procedure per verificare quali tipi di messaggi vengono registrati.
Esempio:
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Risultato:
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 2 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+
Nel mio caso, il LoggingLevel
è 2
, che è il valore predefinito. Questa impostazione registra errori, avvisi e messaggi informativi.
Modifica il tuo livello di registrazione
Puoi usare il sysmail_configure_sp
stored procedure per modificare il livello di registrazione.
In particolare, puoi scegliere un LoggingLevel
di 1
, 2
o 3
.
Questi registrano quanto segue:
- Solo errori.
- Errori, avvisi e messaggi informativi (predefinito).
- Errori, avvisi, messaggi informativi, messaggi di successo e messaggi interni aggiuntivi.
Se stai risolvendo un problema, potresti voler cambiare temporaneamente il tuo livello di registrazione a 3.
Ecco un esempio di modifica del livello di registrazione in 3
.
EXECUTE msdb.dbo.sysmail_configure_sp
'LoggingLevel', '3';
Dopo averlo eseguito, posso controllare il mio LoggingLevel
di nuovo con il sysmail_help_configure_sp
procedura memorizzata.
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Risultato:
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 3 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+