Hvis du prøver at sende e-mail ved hjælp af Database Mail i SQL Server, men det mislykkes at sende, kan du tjekke sysmail_event_log
se, hvorfor det mislykkedes.
sysmail_event_log
view returnerer én række for hver Windows- eller SQL Server-meddelelse, der returneres af Database Mail-systemet. Med "besked" mener jeg ikke selve mailbeskeden. Jeg mener en meddelelse såsom fejlmeddelelsen, der forklarer, hvorfor e-mailen mislykkedes.
Du kan også bruge sysmail_configure_sp
lagret procedure for at bestemme, hvilke typer meddelelser der logges.
Eksempel
Her er et eksempel til at demonstrere, hvordan man bruger sysmail_event_log
for at returnere alle beskeder.
SELECT * FROM msdb.dbo.sysmail_event_log;
På mit system returnerer dette for mange data til at blive vist her, men her er det igen for at vise én besked, der er returneret.
SELECT *
FROM msdb.dbo.sysmail_event_log
WHERE log_id = 2;
Resultat (ved hjælp af lodret output):
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
Jeg brugte lodret output i dette eksempel, så du ikke behøver at rulle sidelæns.
Tjek dit logføringsniveau
Du kan bruge sysmail_help_configure_sp
gemt procedure for at kontrollere, hvilke typer meddelelser der er logget.
Eksempel:
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Resultat:
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 2 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+
I mit tilfælde er LoggingLevel
er 2
, som er standardværdien. Denne indstilling logger fejl, advarsler og informationsmeddelelser.
Skift dit logføringsniveau
Du kan bruge sysmail_configure_sp
gemt procedure for at ændre dit logningsniveau.
Specifikt kan du vælge et LoggingLevel
af 1
, 2
eller 3
.
Disse logger følgende:
- Kun fejl.
- Fejl, advarsler og informationsmeddelelser (standard).
- Fejl, advarsler, informationsmeddelelser, succesmeddelelser og yderligere interne meddelelser.
Hvis du fejlfinder et problem, vil du måske midlertidigt ændre dit logningsniveau til 3.
Her er et eksempel på ændring af logningsniveauet til 3
.
EXECUTE msdb.dbo.sysmail_configure_sp
'LoggingLevel', '3';
Efter at have kørt det, kan jeg tjekke mit LoggingLevel
igen med sysmail_help_configure_sp
gemt procedure.
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Resultat:
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 3 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+