Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
Den här artikeln beskriver några vanliga fel som påträffas med databasmeddelande och deras lösningar.
Om du vill köra T-SQL-kommandon på SQL Server-instansen använder du SQL Server Management Studio (SSMS),MSSQL-tillägget för Visual Studio Code, sqlcmd eller ditt favoritverktyg för T-SQL-frågor.
Det gick inte att hitta den lagrade proceduren "sp_send_dbmail"
Den sp_send_dbmail lagrade proceduren installeras i msdb databasen. Du måste antingen köra sp_send_dbmail från msdb databasen eller ange ett namn i tre delar för den lagrade proceduren.
Exempel:
EXEC msdb.dbo.sp_send_dbmail ...
Eller:
USE msdb;
GO
EXEC dbo.sp_send_dbmail ...
Använd Konfigurera databasmeddelande för att aktivera och konfigurera databasmeddelande.
Profilen är ogiltig
Det finns två möjliga orsaker till det här meddelandet. Antingen finns inte den angivna profilen eller så har användaren som kör sp_send_dbmail (Transact-SQL) inte behörighet att komma åt profilen.
Om du vill kontrollera behörigheter för en profil kör du den lagrade proceduren sysmail_help_principalprofile_sp (Transact-SQL) med profilens namn. Använd den lagrade proceduren sysmail_add_principalprofile_sp (Transact-SQL) eller Konfigurera databasmeddelande för att bevilja behörighet för en msdb användare eller grupp att komma åt en profil.
Behörighet nekad för sp_send_dbmail
Den här artikeln beskriver hur du felsöker ett felmeddelande som anger att användaren som försöker skicka Database Mail inte har behörighet att köra sp_send_dbmail
Feltexten är:
EXECUTE permission denied on object 'sp_send_dbmail',
database 'msdb', schema 'dbo'.
Om du vill skicka Databas-e-post måste användarna vara en användare i msdb databasen och en medlem av databasrollen DatabaseMailUserRole i msdb databasen. Om du vill lägga till msdb-användare eller grupper i den här rollen använder du SQL Server Management Studio eller kör följande instruktion för den användare eller roll som behöver skicka Database Mail.
EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole'
,@membername = '<user or role name>';
GO
Mer information finns i sp_addrolemember och sp_droprolemember.
Databas-e-post i kö, inga poster i sysmail_event_log- eller Windows-programhändelseloggen
Database Mail förlitar sig på Service Broker för att köa e-postmeddelanden. Om Database Mail stoppas eller om Service Broker-meddelandeleveransen inte är aktiverad i msdb databasen, köar Database Mail meddelanden i databasen men kan inte leverera meddelandena. I det här fallet finns Service Broker-meddelandena kvar i Service Broker Mail-kön. Service Broker aktiverar inte det externa programmet, så det finns inga loggposter i sysmail_event_log och inga uppdateringar av objektstatusen i sysmail_allitems och relaterade vyer.
Kör följande instruktion för att kontrollera om Service Broker är aktiverat i msdb databasen:
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb';
Ett värde på 0 indikerar att meddelandeleverans för Service Broker inte är aktiverat i databasen msdb. Du kan åtgärda problemet genom att aktivera Service Broker i databasen med följande Transact-SQL kommando:
USE master ;
GO
ALTER DATABASE msdb SET ENABLE_BROKER ;
GO
Database Mail förlitar sig på ett antal interna lagrade procedurer. För att minska ytan inaktiveras dessa lagrade procedurer vid ny installation av SQL Server. Om du vill aktivera dessa lagrade procedurer använder du utökade procedurer för Database Mail (serverkonfigurationsalternativet) i det sp_configure systemlagrade förfarandet, som i följande exempel:
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 stoppas i msdb databasen. Kör följande instruktion för att kontrollera status för Database Mail:
EXECUTE dbo.sysmail_help_status_sp;
Starta Database Mail i en e-postvärddatabas genom att köra följande kommando i msdb databasen:
EXECUTE dbo.sysmail_start_sp;
Service Broker undersöker dialogrutans livslängd för meddelanden när den aktiveras. Därför misslyckas alla meddelanden som har funnits i Service Broker-överföringskö längre än den konfigurerade dialoglivslängden omedelbart. Database Mail uppdaterar statusen för misslyckade meddelanden i sysmail_allitems och relaterade vyer. Du måste bestämma om du vill skicka e-postmeddelandena igen. Mer information om hur du konfigurerar dialogrutans livslängd som Database Mail använder finns i sysmail_configure_sp.