Als u e-mail probeert te verzenden met Database Mail in SQL Server, maar het verzenden niet lukt, kunt u de sysmail_event_log
controleren bekijken om te zien waarom het is mislukt.
De sysmail_event_log
view retourneert één rij voor elk Windows- of SQL Server-bericht dat wordt geretourneerd door het Database Mail-systeem. Met "bericht" bedoel ik niet het eigenlijke e-mailbericht. Ik bedoel een bericht zoals het foutbericht waarin wordt uitgelegd waarom de e-mail is mislukt.
U kunt ook de sysmail_configure_sp
. gebruiken opgeslagen procedure om te bepalen welke soorten berichten worden gelogd.
Voorbeeld
Hier is een voorbeeld om te demonstreren hoe sysmail_event_log
te gebruiken om alle berichten terug te sturen.
SELECT * FROM msdb.dbo.sysmail_event_log;
Op mijn systeem retourneert dit te veel gegevens om hier weer te geven, maar hier is het opnieuw om één bericht weer te geven dat wordt geretourneerd.
SELECT *
FROM msdb.dbo.sysmail_event_log
WHERE log_id = 2;
Resultaat (met verticale uitvoer):
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
In dit voorbeeld heb ik verticale uitvoer gebruikt, zodat je niet zijwaarts hoeft te scrollen.
Controleer uw registratieniveau
U kunt de sysmail_help_configure_sp
. gebruiken opgeslagen procedure om te controleren welke soorten berichten zijn gelogd.
Voorbeeld:
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Resultaat:
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 2 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+
In mijn geval is het LoggingLevel
is 2
, wat de standaardwaarde is. Deze instelling registreert fouten, waarschuwingen en informatieve berichten.
Uw logniveau wijzigen
U kunt de sysmail_configure_sp
. gebruiken opgeslagen procedure om uw logniveau te wijzigen.
U kunt specifiek een LoggingLevel
. kiezen van 1
, 2
, of 3
.
Deze loggen het volgende:
- Alleen fouten.
- Fouten, waarschuwingen en informatieve berichten (standaard).
- Fouten, waarschuwingen, informatieve berichten, succesberichten en aanvullende interne berichten.
Als je een probleem oplost, wil je misschien je logniveau tijdelijk wijzigen in 3.
Hier is een voorbeeld van het wijzigen van het logboekniveau naar 3
.
EXECUTE msdb.dbo.sysmail_configure_sp
'LoggingLevel', '3';
Nadat ik dat heb uitgevoerd, kan ik mijn LoggingLevel
. controleren opnieuw met de sysmail_help_configure_sp
opgeslagen procedure.
EXEC msdb.dbo.sysmail_help_configure_sp
@parameter_name = LoggingLevel;
Resultaat:
+--------------+--------------+------------------------------------------------------------------------------+ | paramname | paramvalue | description | |--------------+--------------+------------------------------------------------------------------------------| | LoggingLevel | 3 | Database Mail logging level: normal - 1, extended - 2 (default), verbose - 3 | +--------------+--------------+------------------------------------------------------------------------------+