Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Konfiguracja poczty bazy danych w SQL Server

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:

  1. Service Broker dla bazy danych MSDB musi być włączony.
  2. 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.

  1. Sysmail_add_account_sp
  2. Sysmail_add_profile_sp
  3. 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:

  1. Co to jest poczta bazy danych i jej przeznaczenie?
  2. Wymagania wstępne dotyczące konfiguracji poczty bazy danych.
  3. Skonfiguruj konto poczty bazy danych i profil poczty bazy danych za pomocą studia zarządzania SQL Server.
  4. Skonfiguruj konto poczty bazy danych i profil poczty bazy danych za pomocą T-SQL.
  5. Wyślij testową wiadomość e-mail za pomocą SSMS i T-SQL.
  6. Prawnie odrzuć profil poczty bazy danych i konto poczty bazy danych.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Samouczki dotyczące bazy danych SQL Server ( MSSQL DBA ) dla początkujących Administratorzy baz danych

  2. Jak zmodyfikować okres przechowywania zmian przechwytywania danych (CDC) w programie SQL Server — samouczek dotyczący programu SQL Server

  3. Wyświetl listę wszystkich baz danych z serwera połączonego w programie SQL Server (przykłady T-SQL)

  4. Jak zainstalować program SQL Server na komputerze Mac M1 (ARM64)

  5. Wstaw SQL Server, jeśli nie istnieje