Ако се опитвате да изпратите имейл с помощта на Database Mail в SQL Server, но не успеете да изпратите, можете да проверите sysmail_event_log
прегледайте, за да видите защо не успя.
sysmail_event_log
view връща един ред за всяко съобщение на Windows или SQL Server, върнато от системата на Database Mail. Под „съобщение“ нямам предвид действителното имейл съобщение. Имам предвид съобщение като съобщението за грешка, което обяснява защо имейлът е неуспешен.
Можете също да използвате sysmail_configure_sp
съхранена процедура, за да определи какви типове съобщения се записват.
Пример
Ето пример, за да демонстрирате как да използвате sysmail_event_log
за да върнете всички съобщения.
SELECT * FROM msdb.dbo.sysmail_event_log;
В моята система това връща твърде много данни, за да се покаже тук, но ето го отново, за да покаже едно съобщение, което е върнато.
SELECT *
FROM msdb.dbo.sysmail_event_log
WHERE log_id = 2;
Резултат (с помощта на вертикален изход):
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
Използвах вертикален изход в този пример, така че да не се налага да превъртате настрани.
Проверете нивото на регистрация
Можете да използвате sysmail_help_configure_sp
съхранена процедура, за да проверите какви типове съобщения се записват.
Пример:
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Резултат:
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 2 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+
В моя случай LoggingLevel
е 2
, което е стойността по подразбиране. Тази настройка регистрира грешки, предупреждения и информационни съобщения.
Променете нивото на регистрация
Можете да използвате sysmail_configure_sp
съхранена процедура, за да промените нивото на регистриране.
По-конкретно, можете да изберете LoggingLevel
от 1
, 2
, или 3
.
Те регистрират следното:
- Само грешки.
- Грешки, предупреждения и информационни съобщения (по подразбиране).
- Грешки, предупреждения, информационни съобщения, съобщения за успех и допълнителни вътрешни съобщения.
Ако отстранявате проблем, може да искате временно да промените нивото на регистриране на 3.
Ето пример за промяна на нивото на регистриране на 3
.
EXECUTE msdb.dbo.sysmail_configure_sp
'LoggingLevel', '3';
След като го изпълня, мога да проверя моето LoggingLevel
отново с sysmail_help_configure_sp
съхранена процедура.
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Резултат:
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 3 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+