Jeśli próbujesz wysłać wiadomość e-mail za pomocą poczty bazy danych w programie SQL Server, ale nie można jej wysłać, możesz sprawdzić sysmail_event_log
Zobacz, dlaczego się nie udało.
sysmail_event_log
widok zwraca jeden wiersz dla każdego komunikatu systemu Windows lub programu SQL Server zwróconego przez system poczty bazy danych. Przez „wiadomość” nie mam na myśli samej wiadomości e-mail. Mam na myśli komunikat taki jak komunikat o błędzie, który wyjaśnia, dlaczego wiadomość nie powiodła się.
Możesz także użyć sysmail_configure_sp
procedura składowana w celu określenia, jakie typy wiadomości są rejestrowane.
Przykład
Oto przykład pokazujący, jak używać sysmail_event_log
aby zwrócić wszystkie wiadomości.
SELECT * FROM msdb.dbo.sysmail_event_log;
W moim systemie zwraca to zbyt dużo danych do wyświetlenia tutaj, ale tutaj ponownie pokazuje jedną zwróconą wiadomość.
SELECT *
FROM msdb.dbo.sysmail_event_log
WHERE log_id = 2;
Wynik (przy użyciu wyjścia pionowego):
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
W tym przykładzie użyłem wyjścia pionowego, aby nie trzeba było przewijać na boki.
Sprawdź swój poziom rejestrowania
Możesz użyć sysmail_help_configure_sp
procedura składowana w celu sprawdzenia, jakie typy wiadomości są rejestrowane.
Przykład:
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Wynik:
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 2 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+
W moim przypadku LoggingLevel
to 2
, która jest wartością domyślną. To ustawienie rejestruje błędy, ostrzeżenia i komunikaty informacyjne.
Zmień poziom rejestrowania
Możesz użyć sysmail_configure_sp
procedura składowana, aby zmienić poziom rejestrowania.
W szczególności możesz wybrać LoggingLevel
z 1
, 2
lub 3
.
Rejestrują one następujące informacje:
- Tylko błędy.
- Błędy, ostrzeżenia i komunikaty informacyjne (domyślne).
- Błędy, ostrzeżenia, komunikaty informacyjne, komunikaty o sukcesie i dodatkowe komunikaty wewnętrzne.
Jeśli rozwiązujesz problem, możesz tymczasowo zmienić poziom rejestrowania na 3.
Oto przykład zmiany poziomu rejestrowania na 3
.
EXECUTE msdb.dbo.sysmail_configure_sp
'LoggingLevel', '3';
Po uruchomieniu mogę sprawdzić mój LoggingLevel
ponownie za pomocą sysmail_help_configure_sp
procedura składowana.
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Wynik:
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 3 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+