sql >> Databáze >  >> RDS >> Sqlserver

Zjistěte, proč se nepodařilo odeslat e-mail na SQL Server (T-SQL)

Pokud se pokoušíte odeslat e-mail pomocí Database Mail na serveru SQL, ale odeslání se nezdaří, můžete zkontrolovat sysmail_event_log podívejte se, proč se to nezdařilo.

sysmail_event_log view vrátí jeden řádek pro každou zprávu Windows nebo SQL Server vrácenou systémem Database Mail. „Zprávou“ nemyslím skutečnou poštovní zprávu. Mám na mysli zprávu, jako je chybová zpráva, která vysvětluje, proč se e-mail nezdařil.

Můžete také použít sysmail_configure_sp uložená procedura k určení, jaké typy zpráv jsou protokolovány.

Příklad

Zde je příklad, který ukazuje, jak používat sysmail_event_log vrátit všechny zprávy.

SELECT * FROM msdb.dbo.sysmail_event_log;

V mém systému to vrací příliš mnoho dat na to, aby se zde zobrazilo, ale zde je to znovu pro zobrazení jedné vrácené zprávy.

SELECT * 
FROM msdb.dbo.sysmail_event_log
WHERE log_id = 2;

Výsledek (při použití vertikálního výstupu):

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

V tomto příkladu jsem použil vertikální výstup, abyste se nemuseli posouvat do stran.

Zkontrolujte svou úroveň protokolování

Můžete použít sysmail_help_configure_sp uložená procedura ke kontrole, jaké typy zpráv jsou protokolovány.

Příklad:

EXEC msdb.dbo.sysmail_help_configure_sp 
    @parameter_name = LoggingLevel;

Výsledek:

+--------------+--------------+------------------------------------------------------------------------------+
| paramname    | paramvalue   | description                                                                  |
|--------------+--------------+------------------------------------------------------------------------------|
| LoggingLevel | 2            | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 |
+--------------+--------------+------------------------------------------------------------------------------+

V mém případě LoggingLevel je 2 , což je výchozí hodnota. Toto nastavení zaznamenává chyby, varování a informační zprávy.

Změňte úroveň protokolování

Můžete použít sysmail_configure_sp uloženou proceduru pro změnu úrovně protokolování.

Konkrétně můžete zvolit LoggingLevel z 1 , 2 , nebo 3 .

Tyto protokolují následující:

  1. Pouze chyby.
  2. Chyby, varování a informační zprávy (výchozí).
  3. Chyby, varování, informační zprávy, zprávy o úspěchu a další interní zprávy.

Pokud řešíte problém, možná budete chtít dočasně změnit úroveň protokolování na 3.

Zde je příklad změny úrovně protokolování na 3 .

EXECUTE msdb.dbo.sysmail_configure_sp  
    'LoggingLevel', '3';

Po spuštění mohu zkontrolovat LoggingLevel znovu pomocí sysmail_help_configure_sp uložená procedura.

EXEC msdb.dbo.sysmail_help_configure_sp 
    @parameter_name = LoggingLevel;

Výsledek:

+--------------+--------------+------------------------------------------------------------------------------+
| paramname    | paramvalue   | description                                                                  |
|--------------+--------------+------------------------------------------------------------------------------|
| LoggingLevel | 3            | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 |
+--------------+--------------+------------------------------------------------------------------------------+

  1. Výběr a úprava vertikálních bloků v SQL Server Management Studio (SSMS) - SQL Server / Výukový program TSQL, část 9

  2. Převést název měsíce na číslo měsíce v SQL Server (T-SQL)

  3. Jak převést řetězec na datum v MySQL?

  4. Jak vytvořit jedinečný index, kde se nebere v úvahu pořadí sloupců (nastaveno?)