sql >> Databáze >  >> RDS >> Sqlserver

Konfigurace databázové pošty na serveru SQL

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:

  1. Musí být povolen Service Broker pro databázi MSDB.
  2. 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.

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

  1. Co je databázová pošta a její účel?
  2. Předpoklady pro konfiguraci Database Mail.
  3. Nakonfigurujte databázový poštovní účet a databázový poštovní profil pomocí SQL Server Management Studio.
  4. Nakonfigurujte databázový poštovní účet a databázový poštovní profil pomocí T-SQL.
  5. Odešlete testovací e-mail pomocí SSMS a T-SQL.
  6. Laskavě zrušte databázový poštovní profil a databázový poštovní účet.

  1. Přidružování tabulek pomocí databáze místností v Android Studiu

  2. Vrátit řádek s maximální hodnotou jednoho sloupce na skupinu

  3. Spouštěč MySQL při událostech vložení/aktualizace

  4. Získání návratové hodnoty z uložené procedury v C#