Problembehandlung bei Datenbank-E-Mail: Allgemeine Schritte
Beim Behandeln von Problemen mit der Datenbank-E-Mail werden die folgenden allgemeinen Bereiche des Systems Datenbank-E-Mail überprüft. Diese Verfahren sind in logischer Reihenfolge aufgeführt, können jedoch in beliebiger Folge ausgewertet werden.
So ermitteln Sie, ob die Datenbank-E-Mail aktiviert ist
Stellen Sie in SQL Server Management Studio in einem Abfrage-Editorfenster eine Verbindung mit einer Instanz von SQL Server her, und führen Sie dann den folgenden Code aus:
sp_configure 'show advanced', 1; GO RECONFIGURE; GO sp_configure; GO
Überprüfen Sie im Ergebnisbereich, ob run_value für Database Mail XPs auf 1 festgelegt ist.
Wenn run_value nicht auf 1 festgelegt ist, ist die Datenbank-E-Mail nicht aktiviert. Die Datenbank-E-Mail wird nicht automatisch aktiviert, damit möglichst wenige Features eine Angriffsfläche für böswillige Benutzer bieten. Weitere Informationen finden Sie unter Grundlegendes zur Oberflächenkonfiguration.
Wenn Sie beschließen, die Datenbank-E-Mail zu aktivieren, führen Sie den folgenden Code aus:
sp_configure 'Database Mail XPs', 1; GO RECONFIGURE; GO
Führen Sie den folgenden Code aus, um den Standardzustand der sp_configure-Prozedur wiederherzustellen, in dem keine erweiterten Optionen angezeigt werden:
sp_configure 'show advanced', 0; GO RECONFIGURE; GO
So ermitteln Sie, ob Benutzer zum Senden von Datenbank-E-Mails richtig konfiguriert sind
Um Datenbank-E-Mails zu senden, müssen Benutzer Mitglied der DatabaseMailUserRole sein. Mitglieder der festen Serverrolle sysadmin und der Rolle msdbdb_owner sind automatisch Mitglied der Rolle DatabaseMailUserRole. Führen Sie die folgende Anweisung aus, um alle anderen Mitglieder der Rolle DatabaseMailUserRole anzuzeigen:
EXEC msdb.sys.sp_helprolemember 'DatabaseMailUserRole';
Verwenden Sie die folgende Anweisung, um der Rolle DatabaseMailUserRole Benutzer hinzuzufügen:
sp_addrolemember @rolename = 'DatabaseMailUserRole' ,@membername = '<database user>';
Um Datenbank-E-Mails zu senden, müssen Benutzer Zugriff auf mindestens ein Datenbank-E-Mail-Profil haben. Führen Sie die folgende Anweisung aus, um die Benutzer (Prinzipale) und die Profile anzuzeigen, auf die diese zugreifen können.
EXEC msdb.dbo.sysmail_help_principalprofile_sp;
Verwenden Sie den Assistenten zum Konfigurieren der Datenbank-E-Mail, um Profile zu erstellen und Benutzern den Zugriff auf Profile zu gewähren.
So prüfen Sie, ob die Datenbank-E-Mail gestartet wurde
Das externe Datenbank-E-Mail-Programm wird aktiviert, wenn zu verarbeitende E-Mail-Nachrichten vorhanden sind. Wenn keine zu sendenden Nachrichten für den angegebenen Timeoutzeitraum vorhanden sind, wird das Programm beendet. Führen Sie die folgende Anweisung aus, um zu überprüfen, ob die Datenbank-E-Mail-Aktivierung gestartet wurde.
EXEC msdb.dbo.sysmail_help_status_sp;
Wenn die Datenbank-E-Mail-Aktivierung nicht gestartet wurde, führen Sie zum Aktivieren die folgende Anweisung aus:
EXEC msdb.dbo.sysmail_start_sp;
Wenn das externe Datenbank-E-Mail-Programm gestartet wurde, überprüfen Sie den Status der E-Mail-Warteschlange mit der folgenden Anweisung:
EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'mail';
Die E-Mail-Warteschlange muss den Status RECEIVES_OCCURRING aufweisen. Der Status der Warteschlange kann sich von einem Moment zum anderen ändern. Wenn die E-Mail-Warteschlange nicht den Status RECEIVES_OCCURRING aufweist, beenden Sie die Warteschlange mithilfe von sysmail_stop_sp, und starten Sie die Warteschlange mithilfe von sysmail_start_sp erneut.
Hinweis |
---|
Legen Sie die Anzahl der E-Mails in der E-Mail-Warteschlange mithilfe der length-Spalte im Resultset von sysmail_help_queue_sp fest. |
So ermitteln Sie, ob sich Probleme mit der Datenbank-E-Mail auf alle oder nur auf einige Konten in einem Profil auswirken
Wenn Sie festgestellt haben, dass einige, aber nicht alle Profile E-Mails senden können, liegt möglicherweise ein Problem mit den von den betroffenen Profilen verwendeten Konten für Datenbank-E-Mails vor. Führen Sie die folgende Anweisung aus, um festzustellen, welche Konten erfolgreich E-Mails senden können:
SELECT sent_account_id, sent_date FROM msdb.dbo.sysmail_sentitems;
Wenn ein nicht funktionierendes Profil keines der aufgeführten Konten verwendet, ist es möglich, dass alle dem Profil zur Verfügung stehenden Konten nicht einwandfrei arbeiten. Zum Überprüfen einzelner Konten erstellen Sie mit dem Assistenten zum Konfigurieren der Datenbank-E-Mail ein neues Profil mit nur einem Konto, und verwenden Sie dann das Dialogfeld Test-E-Mail senden, um mithilfe des neuen Kontos eine E-Mail zu senden.
Führen Sie die folgende Anweisung aus, um die Fehlermeldungen der Datenbank-E-Mail anzuzeigen:
SELECT * FROM msdb.dbo.sysmail_event_log;
Hinweis |
---|
Die Datenbank-E-Mail betrachtet eine E-Mail als versandt, wenn diese erfolgreich an einen SMTP-Mailserver übertragen wurde. Nachfolgende Fehler, wie eine ungültige E-Mail-Empfängeradresse, können immer noch verhindern, dass die E-Mail zugestellt wird, sind jedoch im Datenbank-E-Mail-Protokoll nicht enthalten. |
So konfigurieren Sie die Datenbank-E-Mail zur erneuten E-Mail-Übermittlung
Wenn Sie festgestellt haben, dass die Datenbank-E-Mail nicht einwandfrei arbeitet, weil der SMTP-Server nicht zuverlässig erreicht werden kann, können Sie die Rate der erfolgreich übermittelten E-Mails erhöhen. Erhöhen Sie dazu die Anzahl der Versuche der Datenbank-E-Mail beim Senden jeder Nachricht. Starten Sie den Assistenten zum Konfigurieren der Datenbank-E-Mail, und aktivieren Sie die Option Systemparameter anzeigen oder ändern. Sie können dem Profil wahlweise auch mehrere Konten zuordnen, sodass die Datenbank-E-Mail im Falle eines Failovers vom ersten Konto das Failoverkonto zum Senden von E-Mails verwendet.
Auf der Seite Systemparameter konfigurieren bedeuten die Standardwerte von 5 Mal für Wiederholungsversuche und 60 Sekunden für Wiederholungsverzögerung für das Konto, dass die Nachrichtenübermittlung fehlschlägt, wenn der SMTP-Server nicht innerhalb von 5 Minuten erreicht werden kann. Erhöhen Sie diese Parameter, um die Zeitdauer bis zum Fehlschlagen der Nachrichtenübermittlung zu verlängern.
Hinweis |
---|
Wenn eine große Anzahl Nachrichten gesendet wird, kann durch große Standardwerte die Zuverlässigkeit erhöht werden. Dadurch wird jedoch auch die Verwendung von Ressourcen deutlich erhöht, da die Übermittlung vieler Nachrichten immer wieder versucht wird. Beheben Sie das eigentliche Problem, indem Sie das Problem mit dem Netzwerk oder dem SMTP-Server beheben, das bzw. der verhindert, dass von der Datenbank-E-Mail sofort eine Verbindung mit dem SMTP-Server hergestellt wird. |
Sicherheit
Sie müssen Mitglied der festen Serverrolle sysadmin sein, um Probleme mit allen Aspekten der Datenbank-E-Mail zu behandeln. Benutzer, die nicht Mitglied der festen Serverrolle sysadmin sind, können nur Informationen zu den E-Mails abrufen, die sie selbst gesendet haben, nicht jedoch zu E-Mails, die von anderen gesendet wurden.
Siehe auch