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
In dit artikel worden enkele veelvoorkomende fouten beschreven die zijn opgetreden bij database-e-mail en de bijbehorende oplossingen.
Als u T-SQL-opdrachten wilt uitvoeren op uw SQL Server-exemplaar, gebruikt u SQL Server Management Studio (SSMS), de MSSQL-extensie voor Visual Studio Code, sqlcmd of uw favoriete hulpprogramma voor T-SQL-query's.
Kan opgeslagen procedure 'sp_send_dbmail' niet vinden
De sp_send_dbmail opgeslagen procedure wordt geïnstalleerd in de msdb database. U moet sp_send_dbmail uitvoeren in de msdb database of een drieledige naam opgeven voor de opgeslagen procedure.
Voorbeeld:
EXEC msdb.dbo.sp_send_dbmail ...
Of:
USE msdb;
GO
EXEC dbo.sp_send_dbmail ...
Gebruik Database-e-mail configureren om database-e-mail in te schakelen en te configureren.
Profiel is ongeldig
Er zijn twee mogelijke oorzaken voor dit bericht. Het opgegeven profiel bestaat niet of de gebruiker die sp_send_dbmail (Transact-SQL) uitvoert, heeft geen toegang tot het profiel.
Als u de machtigingen voor een profiel wilt controleren, voert u de opgeslagen procedure uit sysmail_help_principalprofile_sp (Transact-SQL) met de naam van het profiel. Gebruik de opgeslagen procedure sysmail_add_principalprofile_sp (Transact-SQL) of database-e-mail configureren om een msdb gebruiker of groep toegang te geven tot een profiel.
Machtiging geweigerd op sp_send_dbmail
In dit artikel wordt beschreven hoe u een foutbericht kunt oplossen waarin wordt aangegeven dat de gebruiker die Database Mail probeert te verzenden, niet gemachtigd is om uit te voeren sp_send_dbmail
De fouttekst is:
EXECUTE permission denied on object 'sp_send_dbmail',
database 'msdb', schema 'dbo'.
Als u database-e-mail wilt verzenden, moeten gebruikers een gebruiker in de msdb database zijn en lid zijn van de databaserol DatabaseMailUserRole in de msdb database. Als u msdb-gebruikers of -groepen wilt toevoegen aan deze rol, gebruikt u SQL Server Management Studio of voert u de volgende instructie uit voor de gebruiker of rol die Database Mail moet verzenden.
EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole'
,@membername = '<user or role name>';
GO
Zie sp_addrolemember en sp_droprolemember voor meer informatie.
Database-e-mail in de wachtrij geplaatst, geen vermeldingen in sysmail_event_log- of Windows-toepassingsgebeurtenislogboek
Database Mail is afhankelijk van Service Broker voor het in wachtrij plaatsen van e-mailberichten. Als Database Mail is gestopt of als de bezorging van Service Broker-berichten niet is geactiveerd in de msdb-database, worden berichten in de wachtrij geplaatst, maar kunnen de berichten niet worden bezorgd. In dit geval blijven de Service Broker-berichten in de Service Broker Mail-wachtrij. Service Broker activeert het externe programma niet, dus er zijn geen logboekvermeldingen sysmail_event_log en geen updates voor de itemstatus in sysmail_allitems en de gerelateerde weergaven.
Voer de volgende instructie uit om te controleren of Service Broker is ingeschakeld in de msdb database:
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb';
Een waarde van 0 geeft aan dat Service Broker-berichtbezorging niet is geactiveerd in de msdb database. Activeer Service Broker in de database met de volgende Transact-SQL opdracht om het probleem op te lossen:
USE master ;
GO
ALTER DATABASE msdb SET ENABLE_BROKER ;
GO
Database Mail is afhankelijk van een aantal interne opgeslagen procedures. Om het oppervlak te verminderen, worden deze opgeslagen procedures uitgeschakeld voor de nieuwe installatie van SQL Server. Als u deze opgeslagen procedures wilt inschakelen, gebruikt u de Database Mail XPs (serverconfiguratieoptie) van de sp_configure door het systeem opgeslagen procedure, zoals in het volgende voorbeeld:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE;
EXEC sp_configure 'show advanced options', 0;
RECONFIGURE;
GO
Database Mail kan worden gestopt in de msdb database. Voer de volgende instructie uit om de status van Database Mail te controleren:
EXECUTE dbo.sysmail_help_status_sp;
Als u Database Mail wilt starten in een e-mailhostdatabase, voert u de volgende opdracht uit in de msdb database:
EXECUTE dbo.sysmail_start_sp;
Service Broker onderzoekt de levensduur van het dialoogvenster voor berichten wanneer deze wordt geactiveerd; Daarom mislukken alle berichten die zich in de Service Broker-overdrachtswachtrij bevinden langer dan de geconfigureerde levensduur van het dialoogvenster onmiddellijk. Database Mail werkt de status van mislukte berichten in de sysmail_allitems en gerelateerde weergaven bij. U moet beslissen of u de e-mailberichten opnieuw wilt verzenden. Zie sysmail_configure_sp voor meer informatie over het configureren van de levensduur van het dialoogvenster dat Database Mail gebruikt.