Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dowiedz się, dlaczego nie udało się wysłać wiadomości e-mail w programie SQL Server (T-SQL)

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:

  1. Tylko błędy.
  2. Błędy, ostrzeżenia i komunikaty informacyjne (domyślne).
  3. 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 |
+--------------+--------------+------------------------------------------------------------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przechowywanie binarnych typów danych w SQL Server

  2. Korzystanie z procedur składowanych SQL Server z Pythona (pyodbc)

  3. Konwertuj nazwę miesiąca na numer miesiąca w programie SQL Server (T-SQL)

  4. Sposób na wyodrębnienie z danych wartości DateTime bez sekund

  5. Do czego służą nawiasy kwadratowe [] w instrukcjach sql?