Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Managed Instance
Het oplossen van problemen met Database Mail omvat het controleren van de volgende algemene gebieden van het Database Mail-systeem. Deze procedures worden in een logische volgorde gepresenteerd, maar kunnen in elke volgorde worden geëvalueerd.
Machtigingen
U moet lid zijn van de vaste serverfunctie sysadmin om problemen met alle aspecten van Database Mail op te lossen. Gebruikers die geen lid zijn van de vaste serverfunctie sysadmin , kunnen alleen informatie verkrijgen over de e-mailberichten die ze proberen te verzenden, niet over e-mailberichten die door andere gebruikers worden verzonden.
Is database-e-mail ingeschakeld
Maak in SQL Server Management Studio verbinding met een exemplaar van SQL Server met behulp van een queryeditorvenster en voer vervolgens de volgende code uit:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure; GOControleer in het resultatenvenster of de
run_valueoptie voor database-mail-XPs (serverconfiguratieoptie) is ingesteld op1.Als
run_valueniet1is, is Database Mail niet ingeschakeld.Database Mail is niet automatisch ingeschakeld om het aantal functies te verminderen dat beschikbaar is voor aanvallen door een kwaadwillende gebruiker. Zie Surface Area Configuration voor meer informatie.
Als u besluit dat het geschikt is om Database Mail in te schakelen, voert u de volgende code uit:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure 'Database Mail XPs', 1; GO RECONFIGURE; GOAls u de procedure wilt herstellen naar de
sp_configurestandaardstatus, waarin geen geavanceerde opties worden weergegeven, voert u de volgende code uit:sp_configure 'show advanced', 0; GO RECONFIGURE; GO
Zijn gebruikers correct geconfigureerd voor het verzenden van e-mail
Als u Database Mail wilt verzenden, moeten gebruikers lid zijn van de databaserol DatabaseMailUserRole in de
msdbdatabase. Leden van de vaste serverrol sysadmin enmsdbdb_owner rol zijn automatisch lid van de rol DatabaseMailUserRole . Voer de volgende instructie uit om alle andere leden van de DatabaseMailUserRole weer te geven:EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole';Gebruik de volgende instructie om gebruikers toe te voegen aan de rol DatabaseMailUserRole :
USE msdb; GO sp_addrolemember @rolename = 'DatabaseMailUserRole' ,@membername = '<database user>';Als u Database Mail wilt verzenden, moeten gebruikers toegang hebben tot ten minste één Database Mail-profiel. Als u de gebruikers (principals) en de profielen waartoe ze toegang hebben, wilt weergeven, voert u de volgende instructie uit.
EXEC msdb.dbo.sysmail_help_principalprofile_sp;Gebruik de wizard Database Mail configureren om profielen te maken en toegang te verlenen tot profielen aan gebruikers.
Is database-e-mail gestart
Het externe programma Database Mail wordt geactiveerd wanneer er e-mailberichten moeten worden verwerkt. Wanneer er geen berichten zijn verzonden voor de opgegeven time-outperiode, wordt het programma afgesloten.
Voer de volgende instructie uit om te bevestigen dat de database-mailactivering is gestart:
EXEC msdb.dbo.sysmail_help_status_sp;Als de activering van Database Mail niet is gestart, voert u de volgende instructie uit om deze te starten:
EXEC msdb.dbo.sysmail_start_sp;Als het externe programma Database Mail is gestart, controleert u de status van de e-mailwachtrij met de volgende instructie:
EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail';De e-mailwachtrij moet de status hebben van
RECEIVES_OCCURRING. De statuswachtrij kan variëren van moment tot moment. Als de status van de e-mailwachtrij nietRECEIVES_OCCURRINGis, start u de wachtrij opnieuw. Stop de wachtrij met behulp van de volgende instructie:EXEC msdb.dbo.sysmail_stop_sp;Start vervolgens de wachtrij met behulp van de volgende instructie:
EXEC msdb.dbo.sysmail_start_sp;Opmerking
Gebruik de
lengthkolom in de resultatensetsysmail_help_queue_spom het aantal e-mailberichten in de wachtrij te bepalen.
Problemen zijn van invloed op sommige of alle accounts
Als u hebt vastgesteld dat sommige, maar niet alle profielen e-mail kunnen verzenden, hebt u mogelijk problemen met de database-e-mailaccounts die door de probleemprofielen worden gebruikt.
Voer de volgende instructie uit om te bepalen welke accounts e-mail kunnen verzenden:
SELECT sent_account_id, sent_date FROM msdb.dbo.sysmail_sentitems;Als een niet-werkend profiel geen van de vermelde accounts gebruikt, is het mogelijk dat alle accounts die beschikbaar zijn voor het profiel niet goed werken. Als u afzonderlijke accounts wilt testen, gebruikt u de wizard Database mailconfiguratie om een nieuw profiel met één account te maken en gebruikt u vervolgens het dialoogvenster Test-e-mail verzenden om e-mail te verzenden met het nieuwe account.
Voer de volgende instructie uit om de foutberichten weer te geven die door Database Mail worden geretourneerd:
SELECT * FROM msdb.dbo.sysmail_event_log;Opmerking
Database Mail beschouwt dat een e-mail is verzonden wanneer deze succesvol is afgeleverd bij een SMTP-mailserver. Volgende fouten, zoals een ongeldig e-mailadres van geadresseerde, kunnen nog steeds voorkomen dat e-mail wordt bezorgd, maar wordt niet opgenomen in het database-e-maillogboek.
E-mailbezorging opnieuw proberen
Als u hebt vastgesteld dat database-e-mail mislukt omdat de SMTP-server niet betrouwbaar kan worden bereikt, kunt u het aantal geslaagde e-mailbezorging verhogen door het aantal keren te verhogen dat Database Mail elk bericht probeert te verzenden. Start de Wizard Database Mailconfiguratie en selecteer de optie Systeemparameters bekijken of wijzigen. U kunt ook meer accounts aan het profiel koppelen, dus bij failover van het primaire account gebruikt Database Mail het failover-account om e-mailberichten te verzenden.
Op de pagina Systeemparameters configureren, de standaardwaarden van vijf keer voor het opnieuw proberen van het account en 60 seconden voor de vertraging van het opnieuw proberen van het account betekent dat de berichtbezorging mislukt als de SMTP-server binnen vijf minuten niet kan worden bereikt. Verhoog deze parameters om de hoeveelheid tijd te verkorten voordat de berichtbezorging mislukt.
Opmerking
Wanneer er grote aantallen berichten worden verzonden, kunnen grote standaardwaarden de betrouwbaarheid verhogen, maar zal het gebruik van resources aanzienlijk toenemen, omdat er steeds opnieuw wordt geprobeerd om veel berichten af te leveren. Los het hoofdprobleem op door het netwerk- of SMTP-serverprobleem op te lossen dat voorkomt dat Database Mail onmiddellijk contact kan opnemen met de SMTP-server.
Controleren of servicebroker is ingeschakeld voor msdb
Voor database-e-mail moet Service Broker zijn ingeschakeld voor de msdb database. Controleer of de Service Broker is ingeschakeld op msdb met het volgende T-SQL-script:
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ; -- should be 1
Als dit niet is ingeschakeld, moet de servicebroker zijn ingeschakeld. Het volgende voorbeeldscript vereist exclusieve toegang tot de msdb systeemdatabases, dus dit is mogelijk niet haalbaar om tijdens normale kantooruren uit te voeren. Voor meer informatie, zie ALTER DATABASE ... SET ENABLE_BROKER.
ALTER DATABASE msdb SET ENABLE_BROKER;