SQL Server Database Mail byl představen v SQL Server 2005. Database Mail je komponenta, která může odesílat e-maily pomocí SQL Server Engine. Pomocí Database Mail může administrátor nebo vývojář odeslat výstup dotazu koncovému uživateli. DBA jej mohou nakonfigurovat tak, aby dostával e-mailová upozornění a oznámení. Database Mail používá SMTP (Simple Mail Transfer Protocol) k doručování e-mailů příjemcům.
V tomto článku předvedu, jak nakonfigurovat SQL Server Database Mail.
Předpoklady pro povolení databázové pošty
Chcete-li povolit funkci databázové pošty, jsou vyžadovány následující předpoklady:
- Musí být povolen Service Broker pro databázi MSDB.
- Musí být spuštěna služba SQL Server Agent.
Musí být povolen Service Broker
Database Mail vyžaduje, aby zprostředkovatel služby zařazoval e-maily do fronty. Pokud je zprostředkovatel služeb zakázán, databázová pošta nemůže doručovat zprávy zprostředkovatele služeb a zůstává ve frontě zprostředkovatele služeb.
Chcete-li ověřit, zda je zprostředkovatel služeb povolen, proveďte následující dotaz:
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.'
Výstup vypadá následovně:
Pokud je zprostředkovatel služeb v databázi MSDB zakázán, proveďte následující dotazy v pořadí, abyste zprostředkovatele služeb povolili:
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
Musí být spuštěna služba SQL Server Agent Service
Database Mail odesílá e-maily nebo zprávy pomocí služby SQL Server agent. Pokud služby agenta neběží, SQL Server nemůže odesílat e-maily. Když služba agenta neběží, všechny zprávy budou zařazeny do fronty a po spuštění služby agenta budou doručeny všechny zprávy ve frontě.
Chcete-li ověřit stav služby agenta, proveďte následující příkaz v SQL Server Management Studio.
use master go EXEC xp_servicecontrol N'querystate',N'SQLAgent$CMS'
Výstup vypadá následovně:
Pokud služba agenta SQL Server neběží, musíme ji spustit. Chcete-li spustit službu SQL Server Agent, otevřeteSlužby , přejděte na Ovládací panely>> Nástroje pro správu>> Služby . V seznamu služeb vyhledejte SQL Server Agent . Klikněte pravým tlačítkem na SQL Server Agent a vyberte Start jak je znázorněno na následujícím obrázku:
Jakmile je povolen zprostředkovatel služeb a spuštěna služba SQL Agent Service, povolte e-mail databáze změnou konfiguračního parametru instance databáze. Ve výchozím nastavení není funkce e-mailu databáze povolena. Musí být povolena změnou konfigurační hodnoty Database Mail XPs od 0 do 1. Opět XP databáze pošty parametr je pokročilá možnost; proto před změnou změňte Zobrazit pokročilou možnost konfigurační parametr od 0 do 1.
Chcete-li povolit databázovou poštu, proveďte postupně následující dotazy:
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
Jakmile je Database Mail povolena, vytvořte databázový poštovní profil a databázový poštovní účet.
Konfigurace databázové pošty
Jakmile jsou splněny všechny předpoklady, nakonfigurujte databázový poštovní účet a databázový poštovní profil.
Vytvoření profilu pošty a účtu databáze
Chcete-li nakonfigurovat poštovní účet databáze a poštovní profil databáze, otevřete SQL Server Management Studio. V Průzkumníku objektů rozbalte Správa a klikněte pravým tlačítkem na Konfigurovat poštu databáze , jak je znázorněno na následujícím obrázku:
Průvodce konfigurací pošty databáze otevře se dialogové okno. V dialogovém okně vyberte Nastavit databázovou poštu provedením následujících úkolů přepínač a klikněte na Další .
Nyní v Novém profilu dialogovém okně zadejte název profilu, popis, který je volitelný, a klikněte na tlačítko Přidat tlačítko pro vytvoření účtu SMTP. Můžete nakonfigurovat více účtů SMTP. Když databázová pošta odešle e-mail, použije účet SMTP na základě priority uvedené v účtu SMTP zobrazení mřížky. Pokud účet při odesílání e-mailu selže, profil použije další účet v seznamu priorit. Viz následující obrázek:
V New Database Mail Account dialogovém okně zadejte vhodný Název účtu , Popis (volitelné), E-mailová adresa , Zobrazovaný název , Odpovědět na e-mail (Volitelné), Server SMTP a Číslo portu . Pokud server SMTP používá ověřování SSL / TSL, zaškrtněte políčko Server vyžaduje zabezpečené ověření volba. V seznamu ověřování vyberte typ ověřování, který se používá k ověření serveru SMTP, a klikněte na OK . Viz následující obrázek:
Zpět v Průvodci konfigurací pošty databáze V dialogovém okně SMTP účty bude účet SMTP uveden zobrazení mřížky. Viz následující obrázek:
Klikněte na Další pro konfiguraci zabezpečení profilu pošty databáze. E-mailový profil databáze můžeme nakonfigurovat buď soukromý nebo veřejný. Pomocí soukromého profilu může odesílat e-maily pouze konkrétní uživatel nebo role. Každý uživatel databáze nebo role může odesílat e-maily pomocí veřejného profilu. Uživatelé musí být vytvořeni v databázi MSDB a tito uživatelé musí být členy databázové role s názvem DatabaseMailUserRole odeslat e-mail. Profil můžeme také nastavit jako výchozí. Po nastavení zabezpečení profilu klikněte na Další pro konfiguraci parametru systému. Konfiguraci zobrazíte na následujícím obrázku:
V části Konfigurovat parametr systému okno, můžeme nastavit počet opakování pokusů, maximální velikost souboru přílohy, seznam přípon souborů, které je zakázáno odesílat jako přílohu. Viz následující obrázek:
Po nakonfigurování systémového parametru klikněte na Další zkontrolovat celou konfiguraci a seznam akcí. Klikněte na Dokončit k dokončení konfigurace pošty databáze. Viz následující obrázek.
Po dokončení konfigurace klikněte na Zavřít pro ukončení průvodce. Viz následující obrázek:
Vytvoření a konfigurace databázového poštovního profilu a účtu pomocí T-SQL
Můžeme také nakonfigurovat databázový poštovní profil a poštovní účet pomocí T-SQL. Chcete-li nakonfigurovat databázovou poštu, musí mít uživatel oprávnění ke spuštění následující uložené procedury.
- Sysmail_add_account_sp
- Sysmail_add_profile_sp
- Sysmail_add_profileaccount_sp
Soubor Sysmail_add_account_sp procedura vytvoří účet pro poštu databáze. Chcete-li vytvořit účet pro poštu v databázi, spusťte následující kód:
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
Soubor Sysmail_add_profile_sp procedura vytvoří databázový poštovní profil. Chcete-li vytvořit poštovní profil databáze, spusťte následující kód:
-- 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
Soubor Sysmail_add_profileaccount_sp procedura přidá účet SMTP do poštovního profilu databáze. Chcete-li přidat účet SMTP do poštovního profilu databáze, spusťte následující kód:
-- 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
Odesílání zkušební pošty pomocí databázové pošty
Jakmile je databázový e-mail nakonfigurován, jak jsem již zmínil, pro odesílání e-mailu, uživatel musí být vytvořen v databázi MSDB a tento uživatel musí být členem DatabaseMailUserRole . Umožňuje uživateli databáze odesílat e-maily pomocí Database Mail. Uživatel databáze musí mít oprávnění ke spuštění pro následující uložené procedury používané ke správě databázové pošty:
- sysmail_help_status_sp
- sysmail_delete_mailitems_sp
- sysmail_allitems
- sysmail_event_log
- sysmail_faileditems
- sysmail_mailattachments
- sysmail_sentitems
- sysmail_unsentitems
Chcete-li odeslat zkušební e-mail pomocí SSMS, otevřete SQL Server Management Studio>> rozbalte Správa v SQL Server Management>> Klikněte pravým tlačítkem na Databázová pošta a vyberte možnost Odeslat zkušební e-mail . Viz následující obrázek:
Odeslat zkušební e-mail otevře se dialogové okno. V Profilu pošty databáze v rozbalovací nabídce vyberte název profilu použitého k odeslání e-mailu (databázový poštovní profil), v části Komu do textového pole zadejte e-mailovou adresu příjemce e-mailu a klikněte na Odeslat zkušební e-mail . Viz následující obrázek:
Můžeme také odesílat e-maily pomocí kódu T-SQL. Chcete-li to provést, spusťte následující skript 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
Seznam základních tabulek ke kontrole stavu e-mailu
Následuje seznam tabulek, které se používají k zobrazení konfigurační databázové pošty, databázového účtu a stavu e-mailu.
[id tabulky=53 /]
Chcete-li zobrazit protokol pošty databáze, otevřete SQL Server Management studio>> rozbalte Správa>> Klikněte pravým tlačítkem na Databázová pošta a vyberte Zobrazit protokol pošty databáze . Viz následující obrázek:
Prohlížeč souborů protokolu otevře se dialogové okno, jak je znázorněno na následujícím obrázku:
Zrušení databázového poštovního účtu a profilu
Chcete-li zrušit profil Database Mail, nejprve zrušte profil Database Mail. Chcete-li to provést, otevřete Průvodce konfigurací databáze pošty jak je vysvětleno na začátku článku. V průvodci vyberte Spravovat databázový poštovní účet a profily a klikněte na Další . Viz následující obrázek:
Na stránce Spravovat profily a účet na stránce vyberte Zobrazit změnu nebo smazat existující profil a klikněte na Další . Viz následující obrázek:
Na stránce Spravovat existující profil na stránce Název profilu vyberte název profilu, který chcete smazat a klikněte na Smazat a klikněte na Další. Viz následující obrázek:
Dále se na obrazovce zobrazí letní akce, prohlédněte si shrnutí a klikněte na Dokončit pro zrušení profilu. Viz následující obrázek:
Po zrušení poštovního profilu databáze zrušte účet databáze. Chcete-li to provést, Otevřít Průvodce konfigurací pošty databáze>> vyberte Spravovat databázové poštovní účty a profil>> Vyberte možnost Zobrazit, změnit nebo smazat existující účet a klikněte na Další. Viz následující obrázek:
Na stránce Spravovat stávající účet na stránce Název účtu v rozevíracím seznamu vyberte název účtu, který chcete smazat, a klikněte na tlačítko Smazat tlačítko, jak je znázorněno na následujícím obrázku:
Na následující obrazovce se zobrazí letní akce, prohlédněte si souhrn a klikněte na Dokončit zahodit účet. Viz následující obrázek:
Zrušení databázového poštovního účtu a profilu pomocí T-SQL
Databázový poštovní účet a databázový poštovní profil můžete také zrušit spuštěním skriptu T-SQL. Chcete-li zrušit profil databáze a účet, spusťte následující kód:
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
Chcete-li ověřit, že databázová pošta a databázový účet byly zrušeny, proveďte následující dotaz:
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'
Shrnutí
V tomto článku jsem vysvětlil:
- Co je databázová pošta a její účel?
- Předpoklady pro konfiguraci Database Mail.
- Nakonfigurujte databázový poštovní účet a databázový poštovní profil pomocí SQL Server Management Studio.
- Nakonfigurujte databázový poštovní účet a databázový poštovní profil pomocí T-SQL.
- Odešlete testovací e-mail pomocí SSMS a T-SQL.
- Laskavě zrušte databázový poštovní profil a databázový poštovní účet.