Datenbank-E-Mail

Gilt für:SQL ServerAzure SQL Managed Instance

Datenbank-E-Mail bietet eine Unternehmenslösung, die zum Senden von E-Mail-Nachrichten von SQL Server-Datenbank-Engine oder Azure SQL Managed Instance verwendet werden kann. Ihre Anwendungen können mit Datenbank-E-Mail E-Mail-Nachrichten an Benutzer über einen externen SMTP-Server senden. Diese Nachrichten können neben Abfrageergebnissen auch Dateien von anderen Ressourcen im Netzwerk enthalten.

Hinweis

Datenbank-E-Mail ist in SQL Server-Datenbankmodul und azure SQL Managed Instance, aber nicht in Azure SQL-Datenbank und elastischen Pools verfügbar. Weitere Informationen zur Verwendung von Datenbank-E-Mail in Azure SQL Managed Instance finden Sie unter Automatisieren von Verwaltungsaufgaben mithilfe von SQL-Agent-Aufträgen in Azure SQL Managed Instance.

Vorteile der Verwendung von Datenbank-E-Mail

Datenbank-E-Mail zeichnet sich durch Zuverlässigkeit, Skalierbarkeit, Sicherheit sowie Unterstützbarkeit aus.

Zuverlässigkeit

  • Datenbank-E-Mail verwendet zum Senden von E-Mail das standardmäßige SMTP (Simple Mail Transfer Protocol). Sie können Datenbank-E-Mail auch dann verwenden, wenn auf dem Computer, auf dem SQL Server ausgeführt wird, kein Client für erweitertes MAPI installiert ist.

  • Prozessisolierung. Zur Verringerung der Auswirkungen auf SQL Server wird die Komponente zur Übermittlung von E-Mail in einem separaten Prozess, außerhalb von SQL Server, ausgeführt. SQL Server fügt E-Mail-Nachrichten auch dann weiter in die Warteschlange ein, wenn der externe Prozess beendet wird oder einen Fehler erzeugt. Die Nachrichten in der Warteschlange werden gesendet, sobald der externe Prozess oder der SMTP-Server online geschaltet werden.

  • Failoverkonten. Mit den Profilen von Datenbank-E-Mail können Sie mehrere SMTP-Server angeben. Falls ein SMTP-Server nicht verfügbar ist, können die E-Mail-Nachrichten an einen anderen SMTP-Server übermittelt werden.

  • Clusterunterstützung. Datenbank-E-Mail ist clusterabhängig und wird auf einem Cluster vollständig unterstützt.

Skalierbarkeit

  • Übermittlung im Hintergrund: Datenbank-E-Mail stellt die Übermittlung im Hintergrund bzw. asynchrone Übermittlung bereit. Wenn Sie sp_send_dbmail aufrufen, um eine Nachricht zu senden, fügt Datenbank-E-Mail eine Anforderung zu einer Service Broker-Warteschlange hinzu. Die gespeicherte Prozedur gibt sofort zurück. Die externe E-Mail-Komponente empfängt die Anforderung und übermittelt die E-Mail-Nachricht.

  • Mehrere Profile: Mit Datenbank-E-Mail können Sie innerhalb einer SQL Server-Instanz mehrere Profile erstellen. Sie können optional das Profil auswählen, das Datenbankmail beim Senden einer Nachricht verwendet.

  • Mehrere Konten: Alle Profile können mehrere Failoverkonten enthalten. Sie können verschiedene Profile mit verschiedenen Konten konfigurieren, um E-Mail-Nachrichten über mehrere E-Mail-Server zu verteilen.

  • 64-Bit-Kompatibilität: Datenbank-E-Mail wird in 64-Bit-Versionen von SQL Server vollständig unterstützt.

Sicherheit

  • Standardmäßig deaktiviert: Um die Oberfläche von SQL Server zu verringern, sind die gespeicherten Prozeduren von Datenbank-E-Mail standardmäßig deaktiviert.

    • Sie müssen zum Konfigurieren von Datenbank-E-Mails ein Mitglied der festen Serverrolle sysadmin sein.
  • E-Mail-Sicherheit: Zum Senden von Datenbank-E-Mails müssen Sie Mitglied der Datenbankrolle DatabaseMailUserRole in der msdb Datenbank sein.

  • Profilsicherheit: Datenbank-E-Mail erzwingt die Sicherheit von Mailprofilen. Wählen Sie die Benutzer oder Gruppen der msdb-Datenbank aus, die Zugriff auf ein Profil von Datenbank-E-Mail besitzen. Sie können entweder nur bestimmten oder allen Benutzern von msdb Zugriff erteilen. Durch private Profile wird der Zugriff auf eine bestimmte Liste von Benutzern eingeschränkt. Öffentliche Profile sind für alle Benutzer einer Datenbank verfügbar.

  • Kontrolle der Anhangsgröße: Database Mail erzwingt ein konfigurierbares Limit für die Größe von Anlagendateien. Sie können dieses Limit mithilfe der gespeicherten Prozedur sysmail_configure_sp ändern.

  • Unzulässige Dateierweiterungen: Datenbank-E-Mail verwaltet eine Liste mit unzulässigen Dateierweiterungen. Benutzer können keine Dateien mit einer Erweiterung anfügen, die in der Liste angezeigt wird. Sie können diese Liste mithilfe von sysmail_configure_sp ändern.

  • Datenbank-E-Mail wird im SQL Server-Engine-Dienstkonto ausgeführt. Um eine Datei aus einem Ordner einer E-Mail anhängen zu können, muss das SQL Server-Engine-Konto über die Berechtigungen zum Zugriff auf den Ordner mit der Datei verfügen.

Unterstützbarkeit

  • Integrierte Konfiguration: Datenbank-E-Mail verwaltet die Informationen für E-Mail-Konten in SQL Server-Datenbank-Engine. Es ist nicht erforderlich, ein E-Mail-Profil in einer externen Clientanwendung zu verwalten. Der Assistent zum Konfigurieren von Datenbank-E-Mail stellt eine geeignete Benutzeroberfläche zum Konfigurieren von Datenbank-E-Mail bereit. Sie können die Konfigurationen für Datenbank-E-Mail auch mithilfe Transact-SQL von erstellen und verwalten.

  • Protokollierung Datenbank-E-Mail protokolliert E-Mail-Aktivitäten in SQL Server, das Ereignisprotokoll der Microsoft Windows-Anwendung und Tabellen in der msdb Datenbank.

  • Überwachung: Datenbank-E-Mail speichert Kopien von Nachrichten und Anlagen, die innerhalb der msdb-Datenbank gesendet wurden. Sie können die Verwendung von Datenbank-E-Mail auf einfache Weise überwachen und die gespeicherten Nachrichten überprüfen.

  • Unterstützung von HTML: Mit Datenbank-E-Mail können Sie E-Mail im HTML-Format senden.

Datenbank-E-Mail-Architektur

Datenbank-E-Mail wurde basierend auf einer Warteschlangenarchitektur entwickelt, in der Service Broker-Technologien zum Einsatz kommen. Wenn Benutzer sp_send_dbmail ausführen, fügt die gespeicherte Prozedur ein Element in die E-Mail-Warteschlange ein und erstellt einen Datensatz, in dem die E-Mail-Nachricht enthalten ist. Durch das Einfügen des neuen Eintrags in die E-Mail-Warteschlange wird der externe Prozess von Datenbank-E-Mail (DatabaseMail.exe) gestartet. Der externe Prozess liest die E-Mail-Informationen und sendet die E-Mail-Nachricht an den entsprechenden E-Mail-Server bzw. an mehrere E-Mail-Server. Der externe Prozess fügt für das Ergebnis des Sendevorgangs ein Element in die Statuswarteschlange ein. Durch das Einfügen des neuen Eintrags in die Statuswarteschlange wird eine interne gespeicherte Prozedur gestartet, mit der der Status der E-Mail-Nachricht aktualisiert wird. Zusätzlich zum Speichern der gesendeten (oder nicht gesendeten) E-Mail-Nachricht werden von Datenbank-E-Mail auch alle E-Mail-Anhänge in den Systemtabellen gespeichert. In den Datenbank-Mail-Ansichten wird der Status der Nachrichten zur Problembehandlung angezeigt, und mit gespeicherten Prozeduren kann die Warteschlange von Datenbank-Mail verwaltet werden.

Diagramm, wie die Msdb-Systemdatenbank Nachrichten an einen SMTP-E-Mail-Server sendet.

Einführung in Datenbank-E-Mail-Komponenten

In Datenbank-E-Mail sind die folgenden Hauptkomponenten enthalten:

  • Konfigurations- und Sicherheitskomponenten

    Datenbank-E-Mail speichert die Konfigurations- und Sicherheitsinformationen in der msdb-Datenbank. Konfigurations- und Sicherheitsobjekte erstellen Profile und Konten, die von Datenbank-E-Mail verwendet werden.

  • Messaging-Komponenten

    Die msdb-Datenbank fungiert als Mailhost-Datenbank, in der die Messagingobjekte enthalten sind, mit denen Datenbank-E-Mail Nachrichten sendet. Zu diesen Objekten zählen die gespeicherte Prozedur sp_send_dbmail und die Datenstrukturen mit Informationen zu den Nachrichten.

  • Ausführbare Datei für Database Mail

    Die ausführbare Datei von Datenbank-E-Mail ist ein externes Programm, das Nachrichten aus einer Warteschlange in der msdb-Datenbank liest und an E-Mail-Server sendet.

  • Protokollierungs- und Überwachungskomponenten

    Datenbank-Mail zeichnet Protokollierungsinformationen in der msdb Datenbank und im Ereignisprotokoll der Microsoft Windows-Anwendung auf.

Konfigurieren des SQL-Agents für die Verwendung von Datenbank-Mail

Der SQL Server-Agent kann zur Verwendung von Datenbank-E-Mail konfiguriert werden. Dies ist für Warnbenachrichtigungen und die automatische Benachrichtigung über den Abschluss von Aufträgen erforderlich.

Warnung

Einzelne Auftragsschritte innerhalb eines Auftrags können ebenfalls E-Mails senden, ohne dass dazu der SQL Server-Agent zur Verwendung von Datenbank-E-Mail konfiguriert werden muss. Ein Transact-SQL-Auftragsschritt kann beispielsweise Datenbank-E-Mail verwenden, um die Ergebnisse einer Abfrage an eine Reihe von Empfängern zu senden.

Sie können den SQL Server-Agent so konfigurieren, dass E-Mail-Nachrichten in folgenden Fällen an vordefinierte Operatoren gesendet werden:

  • Eine Warnung wird ausgelöst. Warnungen können so konfiguriert werden, dass Benachrichtigungen über bestimmte Ereignisse per E-Mail gesendet werden. Beispielsweise können Warnungen so konfiguriert werden, dass ein Operator über ein bestimmtes Datenbankereignis oder eine Betriebssystembedingung benachrichtigt wird, die möglicherweise sofortige Maßnahmen erfordern. Weitere Informationen zum Konfigurieren von Warnungen finden Sie unter Warnungen.

  • Eine geplante Aufgabe, wie z. B. eine Datenbanksicherung oder ein Replikationsereignis, wird erfolgreich ausgeführt oder schlägt fehl. Sie können mithilfe von SQL Server-Agent-Mail beispielsweise Operatoren benachrichtigen, wenn ein Fehler bei der Verarbeitung am Monatsende auftritt.

Informationen zum Konfigurieren des SQL-Agents für die Verwendung von Datenbank-E-Mails finden Sie unter Konfigurieren von SQL Server-Agent-E-Mails für die Verwendung von Datenbank-E-Mails.

Datenbank-E-Mail mit enthaltenen Verfügbarkeitsgruppen

Um Datenbank-E-Mails mit enthaltenen Verfügbarkeitsgruppen zu verwenden, müssen Sie eine Verbindung mit der Instanz herstellen und die Datenbank-Mail-XPs (Serverkonfigurationsoption) mithilfe der sp_configure gespeicherten Systemprozedur aktivieren. Dieser Schritt muss für alle Replikate in der enthaltenen Verfügbarkeitsgruppe abgeschlossen werden.

  • Wenn Sie versuchen, die sp_configure Option für Datenbank-E-Mails zu aktivieren, wenn sie mit dem listener der enthaltenen Verfügbarkeitsgruppe verbunden ist, erhalten Sie den erwarteten Fehler: Changes to server configuration options are not permitted in the connection to Contained Availability Group. Change connection to SQL Server instance level and retry the operation. (Microsoft SQL Server, Error: 5874)

Nachdem Sie die Database Mail XPs Option für alle Replikate aktiviert haben, stellen Sie eine Verbindung mit dem listener der enthaltenen Verfügbarkeitsgruppe her, um mit der Datenbank-E-Mail-Konfiguration fortzufahren, wie unter "Konfigurationsaufgabe auswählen" beschrieben. Dadurch wird sichergestellt, dass die Datenbank-E-Mail-Objekte innerhalb der enthaltenen Verfügbarkeitsgruppe vorhanden sind und synchronisiert bleiben.

TDS 8.0-Unterstützung

SQL Server 2025 (17.x) hat die TDS 8.0-Unterstützung für Datenbank-E-Mail eingeführt. Das TDS 8.0-Protokoll bietet erweiterte Sicherheit und Verschlüsselung für Daten, die zwischen SQL Server und Clientanwendungen übertragen werden. Dadurch kann Datenbank-E-Mail in Umgebungen funktionieren, in denen TLS 1.3-Verschlüsselung und TDS 8.0 erzwungen werden.

Troubleshoot

Informationen zur Problembehandlung bei Datenbank-E-Mail finden Sie unter:

Nächster Schritt