Poczta bazy danych programu SQL Server została wprowadzona w programie SQL Server 2005. Poczta bazy danych to składnik, który może wysyłać wiadomości e-mail przy użyciu aparatu SQL Server. Korzystając z poczty bazy danych, administrator lub programista może wysyłać dane wyjściowe zapytania do użytkownika końcowego. Administratorzy baz danych mogą go skonfigurować tak, aby otrzymywać alerty i powiadomienia e-mail. Poczta bazy danych używa protokołu SMTP (Simple Mail Transfer Protocol) do dostarczania wiadomości e-mail do odbiorców.
W tym artykule zademonstruję, jak skonfigurować pocztę bazy danych SQL Server.
Warunki wstępne włączenia poczty bazy danych
Aby włączyć funkcję poczty bazy danych, wymagane są następujące wymagania wstępne:
- Service Broker dla bazy danych MSDB musi być włączony.
- Usługa SQL Server Agent musi być uruchomiona.
Broker usług musi być włączony
Poczta bazy danych wymaga brokera usług do kolejkowania wiadomości e-mail. Jeśli broker usług jest wyłączony, poczta bazy danych nie może dostarczyć komunikatów brokera usług i pozostaje w kolejce brokera usług.
Aby sprawdzić, czy broker usług jest włączony, wykonaj następujące zapytanie:
USE master go SELECT database_id AS 'Database ID', NAME AS 'Database Name', CASE WHEN is_broker_enabled = 0 THEN 'Service Broker is disabled.' WHEN is_broker_enabled = 1 THEN 'Service Broker is Enabled.' END AS 'Service Broker Status' FROM sys.databases WHERE NAME = 'msdb.'
Wynik wygląda następująco:
Jeśli broker usług w bazie danych MSDB jest wyłączony, wykonaj kolejno następujące zapytania, aby włączyć brokera usług:
Use master go alter database [MSDB] set single_user with rollback immediate GO alter database [MSDB] set Enable_Broker GO alter database [MSDB] set multi_user with rollback immediate GO
Usługa agenta SQL Server musi być uruchomiona
Poczta bazy danych wysyła wiadomości e-mail lub wiadomości przy użyciu usługi agenta programu SQL Server. Jeśli usługi agenta nie są uruchomione, SQL Server nie może wysyłać wiadomości e-mail. Gdy usługa agenta nie jest uruchomiona, wszystkie wiadomości zostaną umieszczone w kolejce, a po uruchomieniu usługi agenta wszystkie wiadomości w kolejce zostaną dostarczone.
Aby zweryfikować stan usługi agenta, wykonaj następujące polecenie w studiu zarządzania SQL Server.
use master go EXEC xp_servicecontrol N'querystate',N'SQLAgent$CMS'
Wynik wygląda następująco:
Jeśli usługa agenta SQL Server nie jest uruchomiona, musimy ją uruchomić. Aby uruchomić usługę SQL Server Agent, otwórzUsługi , przejdź do Panel sterowania>> Narzędzia administracyjne>> Usługi . Na liście usług wyszukaj SQL Server Agent . Kliknij prawym przyciskiem SQL Server Agent i wybierz Rozpocznij jak pokazano na poniższym obrazku:
Po włączeniu brokera usług i uruchomieniu usługi SQL Agent Service włącz pocztę e-mail bazy danych, zmieniając parametr konfiguracyjny instancji bazy danych. Domyślnie funkcja poczty e-mail bazy danych nie jest włączona. Należy go włączyć, zmieniając wartość konfiguracyjną Database Mail XPs od 0 do 1. Ponownie, Database Mail XPs parametr jest opcją zaawansowaną; dlatego przed zmianą zmień Pokaż opcję zaawansowaną parametr konfiguracyjny od 0 do 1.
Aby włączyć pocztę bazy danych, wykonaj kolejno następujące zapytania:
USE master Go EXEC sp_configure 'show advanced options', 1 --Enable advance option Go RECONFIGURE Go EXEC sp_configure 'Database Mail XPs,' 1 --Enable database Mail option Go RECONFIGURE Go EXEC sp_configure 'show advanced options', 0 --Disabled advanced option Go RECONFIGURE Go
Po włączeniu poczty bazy danych utwórz profil poczty bazy danych i konto poczty bazy danych.
Konfigurowanie poczty bazy danych
Po spełnieniu wszystkich wymagań wstępnych skonfiguruj konto pocztowe bazy danych i profil pocztowy bazy danych.
Tworzenie profilu i konta poczty bazy danych
Aby skonfigurować konto pocztowe bazy danych i profil pocztowy bazy danych, otwórz program SQL Server Management Studio. W Eksploratorze obiektów rozwiń Zarządzanie i kliknij prawym przyciskiem myszy Konfiguruj pocztę bazy danych , jak pokazano na poniższym obrazku:
Kreator konfiguracji poczty bazy danych otworzy się okno dialogowe. W oknie dialogowym wybierz Konfiguruj pocztę bazy danych, wykonując następujące zadania przycisk opcji i kliknij Dalej .
Teraz w Nowym profilu w oknie dialogowym podaj nazwę profilu, opis, który jest opcjonalny i kliknij przycisk Dodaj przycisk, aby utworzyć konto SMTP. Możesz skonfigurować wiele kont SMTP. Gdy poczta z bazy danych wysyła wiadomość e-mail, używa konta SMTP na podstawie priorytetu wymienionego w koncie SMTP widok siatki. Jeśli konto ulegnie awarii podczas wysyłania wiadomości e-mail, profil użyje następnego konta na liście priorytetów. Zobacz następujący obraz:
W Nowym koncie pocztowym bazy danych w oknie dialogowym podaj odpowiednią Nazwę konta , Opis (opcjonalnie), Adres e-mail , Nazwa wyświetlana , Odpowiedz na e-mail (Opcjonalnie), serwer SMTP i Numer portu . Jeśli serwer SMTP korzysta z uwierzytelniania SSL /TSL, zaznacz Serwer wymaga bezpiecznego uwierzytelniania opcja. Z listy uwierzytelniania wybierz typ uwierzytelniania używany do uwierzytelniania serwera SMTP i kliknij OK . Zobacz następujący obraz:
Powrót do Kreatora konfiguracji poczty bazy danych okno dialogowe, konto SMTP zostanie wymienione w kontach SMTP widok siatki. Zobacz następujący obraz:
Kliknij Dalej aby skonfigurować zabezpieczenia profilu poczty bazy danych. Profil e-mail bazy danych możemy skonfigurować jako prywatny lub publiczny. Tylko określony użytkownik lub rola mogą wysyłać wiadomości e-mail przy użyciu profilu prywatnego. Każdy użytkownik lub rola bazy danych może wysyłać wiadomości e-mail przy użyciu profilu publicznego. Użytkownicy muszą być utworzeni w bazie danych MSDB, a ci użytkownicy muszą należeć do roli bazy danych o nazwie DatabaseMailUserRole wysłać emaila. Możemy również ustawić profil jako profil domyślny. Po ustawieniu zabezpieczeń profilu kliknij Dalej aby skonfigurować parametr systemowy. Zobacz poniższy obraz, aby zobaczyć konfigurację:
W Konfiguruj parametr systemu W oknie możemy ustawić liczbę ponownych prób, maksymalny rozmiar pliku załącznika, listę rozszerzeń plików, których nie można wysłać jako załącznik. Zobacz następujący obraz:
Po skonfigurowaniu parametru systemowego kliknij Dalej aby przejrzeć całą konfigurację i listę działań. Kliknij Zakończ aby zakończyć konfigurację poczty bazy danych. Zobacz poniższy obraz.
Po zakończeniu konfiguracji kliknij Zamknij aby wyjść z kreatora. Zobacz następujący obraz:
Tworzenie i konfigurowanie profilu i konta poczty bazy danych przy użyciu T-SQL
Możemy również skonfigurować profil pocztowy bazy danych oraz konto pocztowe za pomocą T-SQL. Aby skonfigurować pocztę bazy danych, użytkownik musi mieć uprawnienia „wykonywanie” w następującej procedurze przechowywanej.
- Sysmail_add_account_sp
- Sysmail_add_profile_sp
- Sysmail_add_profileaccount_sp
Sysmail_add_account_sp Procedura tworzy konto dla poczty bazy danych. Aby utworzyć konto dla poczty bazy danych, wykonaj następujący kod:
EXEC msdb.dbo.sysmail_add_account_sp @account_name = 'Database Mail Default SMTP account' , @description = 'This account will be used to send database mail' , @email_address = '[email protected]' , @display_name = 'DBA Support' , @replyto_address = '' , @mailserver_type = 'SMTP' , @mailserver_name = '192.168.1.60' , @port = 25 Go
Sysmail_add_profile_sp Procedura tworzy profil poczty bazy danych. Aby utworzyć profil poczty bazy danych, wykonaj następujący kod:
-- Create a Database Mail profile EXEC msdb.dbo.sysmail_add_profile_sp @profile_name = 'Database Mail Profile' , @description = 'This profile will be used to send database mail' Go
Sysmail_add_profileaccount_sp Procedura dodaje konto SMTP do profilu poczty bazy danych. Aby dodać konto SMTP do profilu poczty bazy danych, wykonaj następujący kod:
-- Add the account to the profile EXEC msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'Database Mail Profile' , @account_name = 'Database Mail Default SMTP account' , @sequence_number = 1 Go
Wysyłanie poczty testowej za pomocą poczty bazy danych
Po skonfigurowaniu poczty bazy danych, jak wspomniałem wcześniej, w celu wysłania wiadomości e-mail, użytkownik musi być utworzony w bazie danych MSDB i musi być członkiem DatabaseMailUserRole . Umożliwia użytkownikowi bazy danych wysyłanie wiadomości e-mail za pomocą poczty bazy danych. Użytkownik bazy danych musi mieć uprawnienia do wykonywania następujących procedur składowanych używanych do zarządzania pocztą bazy danych:
- sysmail_help_status_sp
- sysmail_delete_mailitems_sp
- sysmail_allitems
- sysmail_event_log
- sysmail_faileditems
- sysmail_mailattachments
- sysmail_sentitems
- sysmail_unsentitems
Aby wysłać testową wiadomość e-mail za pomocą SSMS, otwórz SQL Server Management Studio>> Rozwiń Zarządzanie w Zarządzanie serwerem SQL>> kliknij prawym przyciskiem myszy Poczta bazy danych i wybierz Wyślij pocztę testową . Zobacz następujący obraz:
Wyślij testową wiadomość e-mail otworzy się okno dialogowe. W profilu poczty bazy danych wybierz nazwę profilu używanego do wysyłania wiadomości e-mail (Profil poczty bazy danych), w Do pole tekstowe, podaj adres e-mail odbiorcy wiadomości e-mail i kliknij Wyślij pocztę testową . Zobacz następujący obraz:
Możemy również wysyłać e-maile za pomocą kodu T-SQL. Aby to zrobić, wykonaj następujący skrypt T-SQL:
use MSDB go EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Database Mail Profile' , @recipients = '[email protected]' , @subject = 'Automated Test Results (Successful)' , @body = 'The stored procedure finished successfully.' Go
Lista niezbędnych tabel do sprawdzenia statusu poczty e-mail
Poniżej znajduje się lista tabel używanych do przeglądania poczty bazy danych konfiguracji, konta bazy danych i stanu wiadomości e-mail.
[identyfikator tabeli=53 /]
Aby wyświetlić dziennik poczty bazy danych, otwórz Studio zarządzania serwerem SQL>> rozwiń Zarządzanie>> Kliknij prawym przyciskiem myszy Poczta bazy danych i wybierz Wyświetl dziennik poczty bazy danych . Zobacz następujący obraz:
Przeglądarka plików dziennika otworzy się okno dialogowe, jak pokazano na poniższym obrazku:
Upuszczanie konta pocztowego bazy danych i profilu
Aby usunąć profil poczty bazy danych, najpierw upuść profil poczty bazy danych. Aby to zrobić, otwórz Kreator konfiguracji poczty bazy danych, jak wyjaśniono na początku artykułu. W kreatorze wybierz Zarządzaj kontem i profilami poczty bazy danych i kliknij Dalej . Zobacz następujący obraz:
Na Zarządzaj profilami i kontem s strony, wybierz Wyświetl zmianę lub usuń istniejący profil i kliknij Dalej . Zobacz następujący obraz:
W Zarządzaj istniejącym profilem wybierz nazwę profilu, który chcesz usunąć z Nazwa profilu rozwijane i kliknij Usuń i kliknij Dalej. Zobacz następujący obraz:
Następnie na ekranie wyświetli się podsumowanie działań, przejrzyj podsumowanie i kliknij Zakończ aby upuścić profil. Zobacz następujący obraz:
Po usunięciu profilu poczty bazy danych usuń konto bazy danych. Aby to zrobić, w Otwórz Kreatora konfiguracji poczty bazy danych>> wybierz Zarządzaj kontami pocztowymi bazy danych i profilem>> Wybierz Wyświetl, zmień lub usuń istniejące konto opcję i kliknij Dalej. Zobacz następujący obraz:
Na Zarządzaj istniejącym kontem strony, z Nazwa konta z listy rozwijanej wybierz nazwę konta, które chcesz usunąć, i kliknij Usuń przycisk, jak pokazano na poniższym obrazku:
Poniższy ekran wyświetli podsumowanie działań, przejrzyj podsumowanie i kliknij Zakończ usunąć konto. Zobacz następujący obraz:
Usuwanie konta pocztowego bazy danych i profilu przy użyciu T-SQL
Możesz także usunąć konto pocztowe bazy danych i profil pocztowy bazy danych, wykonując skrypt T-SQL. Aby usunąć profil i konto bazy danych, wykonaj następujący kod:
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 = 'Database Mail Profile' AND a.name = 'Database Mail Default SMTP account') BEGIN EXECUTE msdb.dbo.sysmail_delete_profileaccount_sp @profile_name = 'Database Mail Profile',@account_name = 'Database Mail Default SMTP account' END IF EXISTS(SELECT * FROM msdb.dbo.sysmail_account WHERE name = 'Database Mail Default SMTP account') BEGIN EXECUTE msdb.dbo.sysmail_delete_account_sp @account_name = 'Database Mail Default SMTP account' END IF EXISTS(SELECT * FROM msdb.dbo.sysmail_profile WHERE name = 'Database Mail Profile') BEGIN EXECUTE msdb.dbo.sysmail_delete_profile_sp @profile_name = 'Database Mail Profile' END
Aby sprawdzić, czy poczta bazy danych i konto bazy danych zostały usunięte, wykonaj następujące zapytanie:
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 = 'Database Mail Profile' AND a.name = 'Database Mail Default SMTP account'
Podsumowanie
W tym artykule wyjaśniłem:
- Co to jest poczta bazy danych i jej przeznaczenie?
- Wymagania wstępne dotyczące konfiguracji poczty bazy danych.
- Skonfiguruj konto poczty bazy danych i profil poczty bazy danych za pomocą studia zarządzania SQL Server.
- Skonfiguruj konto poczty bazy danych i profil poczty bazy danych za pomocą T-SQL.
- Wyślij testową wiadomość e-mail za pomocą SSMS i T-SQL.
- Prawnie odrzuć profil poczty bazy danych i konto poczty bazy danych.