SQL Server Database Mail wurde in SQL Server 2005 eingeführt. Database Mail ist eine Komponente, die E-Mails mit SQL Server Engine senden kann. Mithilfe von Datenbank-E-Mail kann ein Administrator oder Entwickler eine Abfrageausgabe an einen Endbenutzer senden. DBAs können es so konfigurieren, dass es E-Mail-Warnungen und Benachrichtigungen erhält. Datenbank-E-Mail verwendet SMTP (Simple Mail Transfer Protocol), um E-Mails an Empfänger zuzustellen.
In diesem Artikel werde ich demonstrieren, wie man SQL Server Database Mail konfiguriert.
Voraussetzungen zum Aktivieren von Datenbank-E-Mail
Um die Datenbank-E-Mail-Funktion zu aktivieren, sind die folgenden Voraussetzungen erforderlich:
- Service Broker für die MSDB-Datenbank muss aktiviert sein.
- Der SQL Server Agent-Dienst muss ausgeführt werden.
Service Broker muss aktiviert sein
Für Datenbank-E-Mail muss Service Broker E-Mails in die Warteschlange stellen. Wenn der Service Broker deaktiviert ist, kann die Datenbank-E-Mail die Service Broker-Nachrichten nicht zustellen und verbleibt in der Service Broker-Warteschlange.
Um zu überprüfen, ob der Service Broker aktiviert ist, führen Sie die folgende Abfrage aus:
USE master go SELECT database_id AS 'Datenbank-ID', NAME AS 'Datenbankname', CASE WHEN is_broker_enabled =0 THEN 'Service Broker ist deaktiviert.' WHEN is_broker_enabled =1 THEN 'Service Broker ist aktiviert.' END AS 'Service Broker Status' FROM sys.databases WHERE NAME ='msdb.'
Die Ausgabe sieht wie folgt aus:
Wenn der Service Broker in der MSDB-Datenbank deaktiviert ist, führen Sie die folgenden Abfragen nacheinander aus, um den Service Broker zu aktivieren:
Verwenden Sie die mastergoalter-Datenbank [MSDB], setzen Sie single_user mit sofortigem Rollback auf GOalter-Datenbank [MSDB] setzen Sie Enable_BrokerGOalter-Datenbank [MSDB] setzen Sie multi_user mit sofortigem Rollback auf GO
SQL Server Agent-Dienst muss ausgeführt werden
Datenbank-E-Mail sendet E-Mails oder Nachrichten mithilfe des SQL Server-Agentendiensts. Wenn die Agentendienste nicht ausgeführt werden, kann SQL Server keine E-Mails senden. Wenn der Agentendienst nicht ausgeführt wird, werden alle Nachrichten in die Warteschlange gestellt, und wenn der Agentendienst startet, werden alle Nachrichten in der Warteschlange zugestellt.
Führen Sie den folgenden Befehl in SQL Server Management Studio aus, um den Status des Agentendienstes zu überprüfen.
use mastergoEXEC xp_servicecontrol N'querystate',N'SQLAgent$CMS'
Die Ausgabe sieht wie folgt aus:
Wenn der SQL Server-Agent-Dienst nicht ausgeführt wird, müssen wir ihn starten. Um den SQL Server Agent-Dienst zu starten, öffnen Sie Dienste , gehen Sie zu Systemsteuerung>> Verwaltungstools>> Dienste . Suchen Sie in der Liste der Dienste nach SQL Server Agent . Klicken Sie mit der rechten Maustaste auf SQL Server-Agent und wählen Sie Start wie im folgenden Bild gezeigt:
Sobald der Service Broker aktiviert und der SQL Agent-Dienst gestartet wurde, aktivieren Sie die Datenbank-E-Mail, indem Sie den Konfigurationsparameter der Datenbankinstanz ändern. Standardmäßig ist die Datenbank-E-Mail-Funktion nicht aktiviert. Es muss aktiviert werden, indem der Konfigurationswert von Database Mail XPs geändert wird von 0 auf 1. Wieder die Datenbank-E-Mail-XPs Parameter ist eine erweiterte Option; Ändern Sie daher vor dem Ändern die Erweiterte Option anzeigen Konfigurationsparameter von 0 auf 1.
Um Datenbank-E-Mail zu aktivieren, führen Sie die folgenden Abfragen nacheinander aus:
USE masterGoEXEC sp_configure 'Erweiterte Optionen anzeigen', 1 --Erweiterte OptionGoRECONFIGUREGoEXEC sp_configure 'Datenbank-E-Mail-XPs aktivieren', 1 --Datenbank-E-Mail-Option GoRECONFIGUREGoEXEC aktivieren sp_configure 'Erweiterte Optionen anzeigen', 0 --Erweiterte OptionGoRECONFIGUREGo deaktivieren
Sobald Datenbank-E-Mail aktiviert ist, erstellen Sie ein Datenbank-E-Mail-Profil und ein Datenbank-E-Mail-Konto.
Datenbank-E-Mail konfigurieren
Sobald alle Voraussetzungen erfüllt sind, konfigurieren Sie das Datenbank-E-Mail-Konto und das Datenbank-E-Mail-Profil.
Datenbank-E-Mail-Profil und Konto erstellen
Um das Datenbank-E-Mail-Konto und das Datenbank-E-Mail-Profil zu konfigurieren, öffnen Sie SQL Server Management Studio. Erweitern Sie im Objekt-Explorer Verwaltung und klicken Sie mit der rechten Maustaste auf Datenbank-E-Mail konfigurieren , wie im folgenden Bild gezeigt:
Der Datenbank-Mail-Konfigurationsassistent Dialogfeld öffnet sich. Wählen Sie im Dialogfeld die Option Datenbank-E-Mail einrichten, indem Sie die folgenden Aufgaben ausführen Optionsfeld und klicken Sie auf Weiter .
Jetzt im Neuen Profil Geben Sie im Dialogfeld einen Profilnamen und eine optionale Beschreibung ein und klicken Sie auf Hinzufügen Schaltfläche zum Erstellen eines SMTP-Kontos. Sie können mehrere SMTP-Konten konfigurieren. Wenn die Datenbank-E-Mail eine E-Mail sendet, verwendet sie das SMTP-Konto basierend auf der im SMTP-Konto aufgeführten Priorität Rasteransicht. Wenn ein Konto beim Senden von E-Mails fehlschlägt, verwendet das Profil das nächste Konto in der Prioritätsliste. Siehe folgendes Bild:
Im Neuen Datenbank-E-Mail-Konto Geben Sie im Dialogfeld einen geeigneten Kontonamen ein , Beschreibung (optional), E-Mail-Adresse , Anzeigename , Antwort-E-Mail (Optional), SMTP-Server und Portnummer . Wenn der SMTP-Server die SSL-/TSL-Authentifizierung verwendet, aktivieren Sie Der Server erfordert eine sichere Authentifizierung Möglichkeit. Wählen Sie in der Authentifizierungsliste einen Authentifizierungstyp aus, der zur Authentifizierung des SMTP-Servers verwendet wird, und klicken Sie auf OK . Siehe folgendes Bild:
Zurück im Datenbank-Mail-Konfigurationsassistenten Dialogfeld wird das SMTP-Konto in den SMTP-Konten aufgelistet Rasteransicht. Siehe folgendes Bild:
Klicken Sie auf Weiter um die Sicherheit des Datenbank-E-Mail-Profils zu konfigurieren. Wir können das Datenbank-E-Mail-Profil entweder privat oder öffentlich konfigurieren. Nur ein bestimmter Benutzer oder eine bestimmte Rolle kann E-Mails mit privatem Profil senden. Jeder Datenbankbenutzer oder jede Rolle kann E-Mails mit dem öffentlichen Profil senden. Benutzer müssen in der MSDB-Datenbank erstellt werden, und diese Benutzer müssen Mitglied einer Datenbankrolle namens DatabaseMailUserRole sein eine E-Mail senden. Wir können das Profil auch als Standardprofil festlegen. Sobald die Profilsicherheit eingestellt ist, klicken Sie auf Weiter um die Systemparameter zu konfigurieren. Sehen Sie sich das folgende Bild an, um die Konfiguration anzuzeigen:
Im Systemparameter konfigurieren Im Fenster können wir eine Anzahl von Wiederholungsversuchen, eine maximale Dateigröße für Anhänge und eine Liste von Dateierweiterungen festlegen, die nicht als Anhang gesendet werden dürfen. Siehe folgendes Bild:
Klicken Sie nach der Konfiguration der Systemparameter auf Weiter , um die gesamte Konfiguration und Liste der Aktionen zu überprüfen. Klicken Sie auf Fertig stellen um die Mailkonfiguration der Datenbank abzuschließen. Siehe folgendes Bild.
Klicken Sie nach Abschluss der Konfiguration auf Schließen um den Assistenten zu verlassen. Siehe folgendes Bild:
Erstellen und Konfigurieren von Datenbank-E-Mail-Profilen und -Konten mit T-SQL
Wir können auch das E-Mail-Profil und das E-Mail-Konto der Datenbank mit T-SQL konfigurieren. Um die Datenbank-E-Mail zu konfigurieren, muss der Benutzer die Berechtigung „Ausführen“ für die folgende gespeicherte Prozedur haben.
- Sysmail_add_account_sp
- Sysmail_add_profile_sp
- Sysmail_add_profileaccount_sp
Die Sysmail_add_account_sp Prozedur erstellt ein Konto für die Datenbank-Mail. Führen Sie den folgenden Code aus, um ein Konto für Datenbank-E-Mail zu erstellen:
EXEC msdb.dbo.sysmail_add_account_sp @account_name ='Standard-SMTP-Konto für Datenbank-E-Mail' , @description ='Dieses Konto wird zum Senden von Datenbank-E-Mail verwendet' , @email_address ='[email protected]' , @display_name =' DBA Support' , @replyto_address ='' , @mailserver_type ='SMTP' , @mailserver_name ='192.168.1.60' , @port =25Go
Die Sysmail_add_profile_sp Die Prozedur erstellt ein Datenbank-E-Mail-Profil. Um ein Datenbank-E-Mail-Profil zu erstellen, führen Sie den folgenden Code aus:
-- Erstellen Sie ein Datenbank-E-Mail-ProfilEXEC msdb.dbo.sysmail_add_profile_sp @profile_name ='Datenbank-E-Mail-Profil' , @description ='Dieses Profil wird verwendet, um Datenbank-E-Mail zu senden'Go
Die Sysmail_add_profileaccount_sp Prozedur fügt das SMTP-Konto einem Datenbank-E-Mail-Profil hinzu. Führen Sie den folgenden Code aus, um ein SMTP-Konto zum E-Mail-Profil der Datenbank hinzuzufügen:
-- Fügen Sie das Konto zum Profil hinzuVersenden von Test-E-Mails mit Datenbank-E-Mail
Sobald die Datenbank-E-Mail konfiguriert ist, wie ich bereits erwähnt habe, um eine E-Mail zu senden, muss der Benutzer in der MSDB-Datenbank erstellt werden und dieser Benutzer muss Mitglied von DatabaseMailUserRole sein . Es ermöglicht einem Datenbankbenutzer, E-Mails mit Database Mail zu senden. Der Datenbankbenutzer muss über eine ausgeführte Berechtigung für die folgenden gespeicherten Prozeduren verfügen, die zum Verwalten von Datenbank-E-Mails verwendet werden:
- sysmail_help_status_sp
- sysmail_delete_mailitems_sp
- sysmail_allitems
- sysmail_event_log
- sysmail_faileditems
- sysmail_mailattachments
- sysmail_sentitems
- sysmail_unsentitems
Um eine Test-E-Mail mit SSMS zu senden, öffnen Sie SQL Server Management Studio>> Erweitern Sie Verwaltung in der SQL Server-Verwaltung>> Rechtsklick auf Datenbank-E-Mail und wählen Sie Testmail senden aus . Siehe folgendes Bild:
Die Test-E-Mail senden Dialogfeld öffnet sich. Im Datenbank-E-Mail-Profil Wählen Sie im Dropdown-Menü An den Namen des Profils aus, das zum Senden einer E-Mail verwendet wird (Datenbank-E-Mail-Profil). Geben Sie im Textfeld die E-Mail-Adresse des E-Mail-Empfängers ein und klicken Sie auf Test-E-Mail senden . Siehe folgendes Bild:
Wir können auch E-Mails mit T-SQL-Code senden. Führen Sie dazu das folgende T-SQL-Skript aus:
use MSDBgoEXEC msdb.dbo.sp_send_dbmail @profile_name ='Datenbank-E-Mail-Profil' , @recipients ='[email protected]' , @subject ='Automated Test Results (Successful)' , @body ='The Stored Procedure Finished erfolgreich.'Los
Liste der wichtigsten Tabellen zur Überprüfung des E-Mail-Status
Es folgt die Liste der Tabellen, die zum Anzeigen der Konfigurationsdatenbank-Mail, des Datenbankkontos und des Status der E-Mail verwendet werden.
[Tabellen-ID=53 /]
Um das Datenbank-E-Mail-Protokoll anzuzeigen, öffnen Sie SQL Server Management Studio>> erweitern Sie Verwaltung>> Klicken Sie mit der rechten Maustaste auf Datenbank-E-Mail und wählen Sie Datenbank-E-Mail-Protokoll anzeigen aus . Siehe folgendes Bild:
Der Protokolldatei-Viewer Dialog öffnet sich, wie im folgenden Bild gezeigt:
Datenbank-E-Mail-Konto und -Profil löschen
Um das Datenbank-E-Mail-Profil zu löschen, löschen Sie zuerst das Datenbank-E-Mail-Profil. Öffnen Sie dazu den Assistenten zum Konfigurieren von Datenbank-E-Mails wie am Anfang des Artikels erklärt. Wählen Sie im Assistenten Datenbank-E-Mail-Konto und -Profile verwalten aus und klicken Sie auf Weiter . Siehe folgendes Bild:
Klicken Sie auf Profile und Konto verwalten Wählen Sie auf der Seite Änderungen anzeigen oder vorhandenes Profil löschen aus und klicken Sie auf Weiter . Siehe folgendes Bild:
Klicken Sie auf Vorhandenes Profil verwalten Wählen Sie auf der Seite Profilname den Namen des Profils aus, das Sie löschen möchten Dropdown-Feld und klicken Sie auf Löschen Schaltfläche und klicken Sie auf Weiter. Siehe folgendes Bild:
Als Nächstes zeigt der Bildschirm die Zusammenfassung der Aktion an, überprüfen Sie die Zusammenfassung und klicken Sie auf Fertig stellen um das Profil zu löschen. Siehe folgendes Bild:
Löschen Sie nach dem Löschen des Datenbank-E-Mail-Profils das Datenbankkonto. Klicken Sie dazu auf Öffnen Sie den Datenbank-E-Mail-Konfigurationsassistenten>> wählen Sie Datenbank-E-Mail-Konten und -Profil verwalten>> Wählen Sie Vorhandenes Konto anzeigen, ändern oder löschen Option und klicken Sie auf Weiter. Siehe folgendes Bild:
Klicken Sie auf Vorhandenes Konto verwalten Seite aus Kontoname Wählen Sie im Dropdown-Feld den Namen des Kontos aus, das Sie löschen möchten, und klicken Sie auf Löschen Schaltfläche, wie im folgenden Bild gezeigt:
Der folgende Bildschirm zeigt die Zusammenfassung der Aktion an, überprüfen Sie die Zusammenfassung und klicken Sie auf Fertig stellen das Konto zu löschen. Siehe folgendes Bild:
Datenbank-E-Mail-Konto und -Profil mit T-SQL löschen
Sie können das Datenbank-E-Mail-Konto und das Datenbank-E-Mail-Profil auch löschen, indem Sie ein T-SQL-Skript ausführen. Führen Sie den folgenden Code aus, um das Datenbankprofil und -konto zu löschen:
IF EXISTS(SELECT * FROM msdb.dbo.sysmail_profileaccount pa INNER JOIN msdb.dbo.sysmail_profile p ON pa.profile_id =p.profile_id INNER JOIN msdb.dbo.sysmail_account a ON pa.account_id =a.account_id WHERE p. name ='Datenbank-E-Mail-Profil' AND a.name ='Datenbank-E-Mail-Standard-SMTP-Konto') BEGIN EXECUTE msdb.dbo.sysmail_delete_profileaccount_sp @profile_name ='Datenbank-E-Mail-Profil', @account_name ='Datenbank-E-Mail-Standard-SMTP-Konto' END IF EXISTS( SELECT * FROM msdb.dbo.sysmail_account WHERE name ='Standard-SMTP-Konto für Datenbank-Mail') BEGIN EXECUTE msdb.dbo.sysmail_delete_account_sp @account_name ='Standard-SMTP-Konto für Datenbank-Mail' END IF EXISTS(SELECT * FROM msdb.dbo.sysmail_profile WHERE name ='Datenbank-E-Mail-Profil') BEGIN EXECUTE msdb.dbo.sysmail_delete_profile_sp @profile_name ='Datenbank-E-Mail-Profil' END
Um zu überprüfen, ob Datenbank-Mail und Datenbankkonto gelöscht wurden, führen Sie die folgende Abfrage aus:
SELECT * FROM msdb.dbo.sysmail_profileaccount pa INNER JOIN msdb.dbo.sysmail_profile p ON pa.profile_id =p.profile_id INNER JOIN msdb.dbo.sysmail_account a ON pa.account_id =a.account_id WHERE p.name =' Datenbank-E-Mail-Profil' UND a.name ='Standard-SMTP-Konto für Datenbank-E-Mail'
Zusammenfassung
In diesem Artikel habe ich erklärt:
- Was sind Datenbank-E-Mails und ihr Zweck?
- Voraussetzungen zum Konfigurieren von Datenbank-E-Mail.
- Datenbank-E-Mail-Konto und Datenbank-E-Mail-Profil mit SQL Server Management Studio konfigurieren.
- Datenbank-E-Mail-Konto und Datenbank-E-Mail-Profil mit T-SQL konfigurieren.
- Test-E-Mail mit SSMS und T-SQL senden.
- Datenbank-E-Mail-Profil und Datenbank-E-Mail-Konto ordnungsgemäß löschen.