Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL Managed Instance
In diesem Artikel werden einige häufige Fehler, die bei Datenbank-E-Mail auftreten können, und deren Lösungen beschrieben.
Verwenden Sie ZUM Ausführen von T-SQL-Befehlen auf Ihrer SQL Server-Instanz SQL Server Management Studio (SSMS), die MSSQL-Erweiterung für Visual Studio Code, sqlcmd oder Ihr bevorzugtes T-SQL-Abfragetool.
Gespeicherte Prozedur „sp_send_dbmail“ wurde nicht gefunden
Die sp_send_dbmail gespeicherte Prozedur wird in der msdb Datenbank installiert. Sie müssen entweder sp_send_dbmail aus der msdb-Datenbank ausführen oder einen dreiteiligen Namen für die gespeicherte Prozedur angeben.
Beispiel:
EXEC msdb.dbo.sp_send_dbmail ...
Oder:
USE msdb;
GO
EXEC dbo.sp_send_dbmail ...
Verwenden Sie "Datenbank-E-Mail konfigurieren", um Datenbank-E-Mails zu aktivieren und zu konfigurieren.
Profil nicht gültig
Für diese Fehlermeldung gibt es zwei mögliche Ursachen: Entweder ist das angegebene Profil nicht vorhanden, oder der Benutzer, der sp_send_dbmail (Transact-SQL) ausführt, hat keine Zugriffsberechtigung für das Profil.
Um Berechtigungen für ein Profil zu überprüfen, führen Sie die gespeicherte Prozedur sysmail_help_principalprofile_sp (Transact-SQL) mit dem Namen des Profils aus. Verwenden Sie die gespeicherte Prozedur sysmail_add_principalprofile_sp (Transact-SQL) oder "Datenbankmail konfigurieren," um einem Benutzer oder einer Gruppe die Berechtigung für den Zugriff auf ein Profil zu erteilen.
Berechtigung für „sp_send_dbmail“ verweigert
In diesem Artikel wird beschrieben, wie Sie eine Fehlermeldung behandeln, die besagt, dass der Benutzer, der versucht, Datenbank-E-Mail zu senden, nicht über die Berechtigung zum Ausführen verfügt. sp_send_dbmail
Die Fehlermeldung lautet wie folgt:
EXECUTE permission denied on object 'sp_send_dbmail',
database 'msdb', schema 'dbo'.
Zum Senden von Datenbank-E-Mails müssen Benutzer ein Benutzer in der msdb Datenbank und ein Mitglied der Datenbankrolle DatabaseMailUserRole in der msdb Datenbank sein. Um dieser Rolle msdb-Benutzer oder -Gruppen hinzuzufügen, verwenden Sie SQL Server Management Studio, oder führen Sie die folgende Anweisung für den Benutzer oder die Rolle aus, der bzw. die Datenbank-E-Mails senden muss.
EXEC msdb.dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole'
,@membername = '<user or role name>';
GO
Weitere Informationen finden Sie unter sp_addrolemember und sp_droprolemember.
Datenbank-E-Mail in der Warteschlange, keine Einträge in „sysmail_event_log“ oder im Windows-Anwendungsereignisprotokoll
Datenbank-E-Mail erfordert Service Broker für das Anordnen von E-Mail-Nachrichten in Warteschlangen. Wenn die Datenbank-Mail angehalten wird oder die Nachrichtenübermittlung des Service Brokers in der msdb Datenbank nicht aktiviert ist, werden Nachrichten in der Datenbank in eine Warteschlange gestellt, aber die Nachrichten können nicht versendet werden. In diesem Fall verbleiben die Service Broker-Nachrichten in der Service Broker-E-Mail-Warteschlange. Der Service Broker aktiviert das externe Programm nicht, daher gibt es keine Protokolleinträge in sysmail_event_log und keine Aktualisierungen des Elementstatus in sysmail_allitems und den zugehörigen Ansichten.
Führen Sie die folgende Anweisung aus, um zu überprüfen, ob der Dienstbroker in der msdb Datenbank aktiviert ist:
SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb';
Ein Wert von 0 bedeutet, dass die Zustellung von Service Broker-Nachrichten in der msdb-Datenbank nicht aktiviert ist. Zur Behebung des Problems aktivieren Sie Service Broker in der Datenbank mit dem folgenden Transact-SQL-Befehl:
USE master ;
GO
ALTER DATABASE msdb SET ENABLE_BROKER ;
GO
Datenbank-E-Mail basiert auf verschiedenen intern gespeicherten Prozeduren. Um den Oberflächenbereich zu reduzieren, werden diese gespeicherten Prozeduren bei neuen Installationen von SQL Server deaktiviert. Um diese gespeicherten Prozeduren zu aktivieren, verwenden Sie die Datenbank-Mail-XPs (Serverkonfigurationsoption) der sp_configure gespeicherten Systemprozedur, wie im folgenden Beispiel gezeigt:
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
Datenbank-E-Mail wird möglicherweise in der msdb Datenbank beendet. Um den Status von Datenbank-E-Mail zu prüfen, führen Sie die folgende Anweisung aus:
EXECUTE dbo.sysmail_help_status_sp;
Führen Sie den folgenden Befehl in der msdb Datenbank aus, um Datenbank-E-Mail in einer E-Mail-Hostdatenbank zu starten:
EXECUTE dbo.sysmail_start_sp;
Service Broker untersucht die Dialogfeld-Lebensdauer für Nachrichten, wenn es aktiviert ist. Daher schlagen Nachrichten, die sich länger als die konfigurierte Dialogfeld-Lebensdauer in der Service Broker-Übertragungswarteschlange befinden, sofort fehl. Datenbank-E-Mail aktualisiert den Status fehlgeschlagener Nachrichten in der sysmail_allitems-Sicht und zugehörigen Sichten. Sie müssen entscheiden, ob die E-Mail-Nachrichten erneut gesendet werden sollen. Weitere Informationen zum Konfigurieren der Von Datenbank-E-Mail verwendeten Dialoglebensdauer finden Sie unter sysmail_configure_sp.