sql >> Databasteknik >  >> RDS >> Sqlserver

Konfigurera Databas Mail i SQL Server

SQL Server Database Mail har introducerats i SQL Server 2005. Database Mail är en komponent som kan skicka e-post med SQL Server Engine. Med hjälp av Database Mail kan en administratör eller en utvecklare skicka frågeutdata till en slutanvändare. DBA:er kan konfigurera den för att få e-postvarningar och aviseringar. Database Mail använder SMTP (Simple Mail Transfer Protocol) för att leverera e-post till mottagare.

I den här artikeln kommer jag att demonstrera hur du konfigurerar SQL Server Database Mail.

Förutsättningar för att aktivera Databas Mail

För att aktivera databaspostfunktionen krävs följande:

  1. Service Broker för MSDB-databasen måste vara aktiverad.
  2. SQL Server Agent-tjänsten måste köras.

Service Broker måste vara aktiverad

Databas Mail kräver att tjänstemäklare ställer e-post i kö. Om tjänstemäklaren är inaktiverad kan databasens e-post inte leverera servicemäklarens meddelanden och den ligger kvar i tjänstmäklarkön.
För att verifiera att tjänstmäklaren är aktiverad, utför följande fråga:

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.'

Utgången ser ut som följer:

Om tjänstemäklaren på MSDB-databasen är inaktiverad, kör följande frågor i följd för att aktivera tjänstemäklaren:

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

SQL Server Agent Service måste vara igång

Databas Mail skickar e-post eller meddelanden med hjälp av SQL Server-agenttjänsten. Om agenttjänsterna inte körs kan SQL Server inte skicka e-postmeddelanden. När agenttjänsten inte körs kommer alla meddelanden att ställas i kö, och när agenttjänsten startar kommer alla köade meddelanden att levereras.

För att verifiera statusen för agenttjänsten, kör följande kommando i SQL Server Management Studio.

use master
go
EXEC xp_servicecontrol N'querystate',N'SQLAgent$CMS'

Utgången ser ut som följer:

Om SQL Server-agenttjänsten inte körs måste vi starta den. ÖppnaTjänster för att starta tjänsten SQL Server Agent , gå till Kontrollpanelen>> Administrationsverktyg>> Tjänster . Sök efter SQL Server Agent i listan över tjänster . Högerklicka på SQL Server Agent och välj Start, som visas i följande bild:

När tjänstemäklaren är aktiverad och SQL Agent Service har startat, aktivera databasens e-post genom att ändra databasinstansens konfigurationsparameter. Som standard är e-postdatabasfunktionen inte aktiverad. Det måste aktiveras genom att ändra konfigurationsvärdet för Database Mail XPs från 0 till 1. Återigen, Databas Mail XPs parameter är ett avancerat alternativ; därför, innan du ändrar det, ändra Visa avancerat alternativ konfigurationsparameter från 0 till 1.

För att aktivera databaspost, kör följande frågor i följd:

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

När Databas Mail är aktiverat skapar du en databaspostprofil och databaspostkonto.

Konfigurera Databas Mail

När alla förutsättningar är uppfyllda, konfigurera databasens e-postkonto och databasens e-postprofil.

Skapa e-postdatabasprofil och konto

Öppna SQL Server Management Studio för att konfigurera databasens e-postkonto och databasens e-postprofil. Expandera Management i Objektutforskaren och högerklicka på Konfigurera databaspost , som visas i följande bild:

Konfigurationsguiden för e-postdatabas dialogrutan öppnas. I dialogrutan väljer du Setup Database Mail genom att utföra följande uppgifter alternativknappen och klicka på Nästa .

Nu i Ny profil dialogrutan, ange ett profilnamn, en beskrivning som är valfri och klicka på Lägg till för att skapa ett SMTP-konto. Du kan konfigurera flera SMTP-konton. När databasposten skickar ett e-postmeddelande använder den SMTP-kontot baserat på den prioritet som anges i SMTP-kontot rutnätsvy. Om ett konto misslyckas när e-post skickas, använder profilen nästa konto i prioritetslistan. Se följande bild:

I Nytt e-postkonto för databas dialogrutan, ange ett lämpligt kontonamn , Beskrivning (valfritt), E-postadress , Visningsnamn , Svara e-post (Valfritt), SMTP-server och Portnummer . Om SMTP-servern använder SSL/TSL-autentisering, markera Servern kräver säker autentisering alternativ. I autentiseringslistan väljer du en typ av autentisering som används för att autentisera SMTP-servern och klickar på OK . Se följande bild:

Tillbaka i Konfigurationsguiden för e-postdatabas dialogrutan kommer SMTP-kontot att listas i SMTP-konton rutnätsvy. Se följande bild:

Klicka på Nästa för att konfigurera databasens e-postprofilsäkerhet. Vi kan konfigurera databasens e-postprofil antingen privat eller offentlig. Endast en specifik användare eller roll kan skicka e-post med att använda privat profil. Alla databasanvändare eller roller kan skicka e-post med en offentlig profil. Användare måste skapas i MSDB-databasen och dessa användare måste vara medlem i en databasroll som heter DatabaseMailUserRole att skicka ett e-postmeddelande. Vi kan också göra profilen som en standardprofil. När profilsäkerheten har ställts in klickar du på Nästa för att konfigurera systemparametern. Se följande bild för att se konfigurationen:

I Konfigurera systemparameter fönster, kan vi ställa in ett antal försök igen, maximal filstorlek för bilagor, lista över filtillägg som är förbjudna att skicka som en bilaga. Se följande bild:

När systemparametern har konfigurerats klickar du på Nästa för att granska hela konfigurationen och listan över åtgärder. Klicka på Slutför för att slutföra e-postkonfigurationen för databasen. Se följande bild.

När konfigurationen är klar klickar du på Stäng för att avsluta guiden. Se följande bild:

Skapa och konfigurera e-postdatabasprofil och konto med T-SQL

Vi kan också konfigurera databasens e-postprofil och e-postkonto med T-SQL. För att konfigurera databasens e-post måste användaren ha behörigheten "exekvera" på följande lagrade procedur.

  1. Sysmail_add_account_sp
  2. Sysmail_add_profile_sp
  3. Sysmail_add_profileaccount_sp

Sysmail_add_account_sp proceduren skapar ett konto för databasens e-post. För att skapa ett konto för databaspost, kör följande 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 proceduren skapar en databaspostprofil. För att skapa en databaspostprofil, kör följande 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 proceduren lägger till SMTP-kontot till en databaspostprofil. För att lägga till SMTP-konto till databasens e-postprofil, kör följande 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

Skicka testmail med Databas Mail

När databasens e-post är konfigurerad, som jag nämnde tidigare, för att skicka ett e-postmeddelande, måste användaren skapas i MSDB-databasen och denna användare måste vara medlem i DatabaseMailUserRole . Det tillåter en databasanvändare att skicka e-post med Databas Mail. Databasanvändaren måste ha en exekverad behörighet för följande lagrade procedurer, som används för att hantera databaspost:

  • sysmail_help_status_sp
  • sysmail_delete_mailitems_sp
  • sysmail_allitems
  • sysmail_event_log
  • sysmail_faileditems
  • sysmail_mailattachments
  • sysmail_sentitems
  • sysmail_unsentitems

För att skicka ett teste-postmeddelande med SSMS, Öppna SQL Server Management Studio>> Expandera Management i SQL Server Management>> Högerklicka på Databas Mail och välj Skicka testmeddelande . Se följande bild:

Skicka testmeddelande dialogrutan öppnas. Ie-postprofilen för databas rullgardinsmenyn, välj namnet på profilen som används för att skicka ett e-postmeddelande (Databas Mail Profile), iTill textrutan, ange e-postadressen till e-postmottagaren och klicka på Skicka testmeddelande . Se följande bild:

Vi kan också skicka e-post med T-SQL-kod. För att göra det, kör följande T-SQL-skript:

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 över viktiga tabeller för att kontrollera e-poststatus

Följande är listan över tabeller som används för att se e-post för konfigurationsdatabas, databaskonto och status för e-postmeddelandet.

[tabell id=53 /]

För att se databasens e-postlogg, öppna SQL Server Management studio>> expandera Management>> Högerklicka på Database-post och välj Visa e-postlogg för databas . Se följande bild:

Loggfilvisning dialogrutan öppnas, som visas i följande bild:

Ta bort databaspostkonto och profil

För att ta bort profilen Databas Mail, släpp först Databas Mail-profilen. För att göra det, öppna Configure Database Mail Wizard, som förklaras i början av artikeln. I guiden väljer du Hantera databaspostkonto och profiler och klicka på Nästa . Se följande bild:

Hantera profiler och konto s sida väljer du Visa Ändra eller ta bort en befintlig profil och klicka på Nästa . Se följande bild:

Hantera befintlig profil väljer du namnet på profilen som du vill ta bort från Profilnamn rullgardinsmenyn och klicka på Ta bort och klicka på Nästa. Se följande bild:

Därefter kommer skärmen att visa en sammanfattning av åtgärder, granska sammanfattningen och klicka på Slutför för att ta bort profilen. Se följande bild:

När du har släppt databaspostprofilen släpper du databaskontot. För att göra det, på Open Database Mail Configuration Wizard>> välj Hantera databaspostkonton och profil>> Välj Visa, ändra eller ta bort ett befintligt konto och klicka på Nästa. Se följande bild:

Hantera befintligt konto från sidan Kontonamn rullgardinsmenyn, välj namnet på kontot som du vill ta bort och klicka på Ta bort knappen, som visas i följande bild:

Följande skärm kommer att visa sammanfattningen av åtgärder, granska sammanfattningen och klicka på Slutför för att ta bort kontot. Se följande bild:

Ta bort databaspostkonto och profil med T-SQL

Du kan också ta bort databasens e-postkonto och databasens e-postprofil genom att köra T-SQL Script. För att ta bort databasprofilen och kontot, kör följande 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

För att verifiera att databaspost och databaskonto har tagits bort, kör följande fråga:

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'

Sammanfattning

I den här artikeln har jag förklarat:

  1. Vad är Databas Mail och dess syfte?
  2. Förutsättningar för att konfigurera Databas Mail.
  3. Konfigurera Databas Mail-konto och Databas Mail Profile med SQL Server Management Studio.
  4. Konfigurera Databas Mail-konto och Databas Mail Profile med T-SQL.
  5. Skicka teste-post med SSMS och T-SQL.
  6. Släpp graciöst Database Mail-profil och Databas Mail-konto.

  1. Hur jag skapar installationsprogram för webbplatsen. PHP mysql

  2. Hur FIELD() fungerar i MariaDB

  3. Vad är PLSQL-poster i Oracle

  4. Vad är AWS RDS