Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Разберете защо имейл не успя да се изпрати в SQL Server (T-SQL)

Ако се опитвате да изпратите имейл с помощта на 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 .

Те регистрират следното:

  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 |
+--------------+--------------+------------------------------------------------------------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на функция COALESCE за създаване на стойности, разделени със запетаи

  2. Как да коригирате „Схемата на дяловете „...“ няма следваща използвана файлова група“ в SQL Server

  3. Преобразувайте „datetime2“ в „date“ в SQL Server (T-SQL примери)

  4. Какво представляват заключване на редове, страници и таблица? И кога се придобиват?

  5. Как да използвате оператора BETWEEN в SQL Server