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í:
- Pouze chyby.
- Chyby, varování a informační zprávy (výchozí).
- 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 | +--------------+--------------+------------------------------------------------------------------------------+