sql >> Database teknologi >  >> RDS >> Sqlserver

Konfiguration af databasemail i SQL Server

SQL Server Database Mail er blevet introduceret i SQL Server 2005. Database Mail er en komponent, der kan sende e-mails ved hjælp af SQL Server Engine. Ved at bruge Database Mail kan en administrator eller en udvikler sende forespørgselsoutput til en slutbruger. DBA'er kan konfigurere det til at modtage e-mail-advarsler og -meddelelser. Database Mail bruger SMTP (Simple Mail Transfer Protocol) til at levere e-mails til modtagere.

I denne artikel vil jeg demonstrere, hvordan du konfigurerer SQL Server Database Mail.

Forudsætninger for at aktivere databasemail

For at aktivere databasemail-funktionen kræves følgende forudsætninger:

  1. Service Broker for MSDB-databasen skal være aktiveret.
  2. SQL Server Agent-tjenesten skal køre.

Service Broker skal være aktiveret

Database Mail kræver, at servicemægler sætter e-mails i kø. Hvis servicemægleren er deaktiveret, kan databasemailen ikke levere servicemæglermeddelelserne, og den forbliver i servicemæglerkøen.
For at bekræfte, at servicemægleren er aktiveret, skal du udføre følgende forespørgsel:

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

Outputtet ser ud som følger:

Hvis servicemægleren på MSDB-databasen er deaktiveret, skal du udføre følgende forespørgsler i rækkefølge for at aktivere servicemægleren:

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 skal køre

Database Mail sender e-mails eller beskeder ved hjælp af SQL Server-agenttjenesten. Hvis agenttjenesterne ikke kører, kan SQL Server ikke sende e-mails. Mens agenttjenesten ikke kører, vil alle meddelelser blive sat i kø, og når agenttjenesten starter, vil alle meddelelser i kø blive leveret.

For at bekræfte status for agenttjenesten skal du udføre følgende kommando i SQL Server Management Studio.

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

Outputtet ser ud som følger:

Hvis SQL Server-agenttjenesten ikke kører, skal vi starte den. For at starte SQL Server Agent-tjenesten skal du åbne Services , gå til Kontrolpanel>> Administrationsværktøjer>> Tjenester . Søg efter SQL Server Agent på listen over tjenester . Højreklik på SQL Server Agent og vælg Start, som vist på følgende billede:

Når servicemægleren er aktiveret, og SQL Agent Service er startet, skal du aktivere database-e-mailen ved at ændre konfigurationsparameteren for databaseinstansen. Som standard er database-e-mail-funktionen ikke aktiveret. Det skal aktiveres ved at ændre konfigurationsværdien for Database Mail XPs fra 0 til 1. Igen, Database Mail XP'erne parameter er en avanceret mulighed; før du ændrer det, skal du derfor ændre Vis avanceret indstilling konfigurationsparameter fra 0 til 1.

For at aktivere databasemail skal du udføre følgende forespørgsler i rækkefølge:

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 Database Mail er aktiveret, skal du oprette en databasemailprofil og databasemailkonto.

Konfiguration af databasemail

Når alle forudsætninger er opfyldt, skal du konfigurere databasens mailkonto og databasemailprofilen.

Oprettelse af databasemail-profil og -konto

For at konfigurere databasens mailkonto og databasemailprofilen skal du åbne SQL Server Management Studio. Udvid Management i Object Explorer og højreklik på Konfigurer databasemail , som vist på følgende billede:

Database Mail Configuration Wizard dialogboksen åbnes. I dialogboksen skal du vælge Setup Database Mail ved at udføre følgende opgaver alternativknappen og klik på Næste .

Nu i Ny profil dialogboks, angiv et profilnavn, en beskrivelse, som er valgfri, og klik på Tilføj knappen for at oprette en SMTP-konto. Du kan konfigurere flere SMTP-konti. Når databasemailen sender en e-mail, bruger den SMTP-kontoen baseret på den prioritet, der er angivet i SMTP-kontoen gittervisning. Hvis en konto fejler under afsendelse af e-mail, bruger profilen den næste konto på prioritetslisten. Se følgende billede:

I Ny databasepostkonto dialogboks, skal du angive et passende kontonavn , Beskrivelse (valgfrit), E-mailadresse , Visningsnavn , Svar e-mail (Valgfrit), SMTP-server og Portnummer . Hvis SMTP-serveren bruger SSL/TSL-godkendelse, skal du markere Serveren kræver sikker godkendelse mulighed. På godkendelseslisten skal du vælge en type godkendelse, der bruges til at godkende SMTP-serveren, og klik på OK . Se følgende billede:

Tilbage i Database Mail Configuration Wizard dialogboksen, vil SMTP-kontoen blive vist i SMTP-konti gittervisning. Se følgende billede:

Klik på Næste for at konfigurere databasens mailprofilsikkerhed. Vi kan konfigurere databasens e-mail-profil enten privat eller offentlig. Kun en bestemt bruger eller rolle kan sende e-mail ved hjælp af Brug af privat profil. Enhver databasebruger eller -rolle kan sende e-mail ved hjælp af offentlig profil. Brugere skal oprettes i MSDB-databasen, og disse brugere skal være medlem af en databaserolle ved navn DatabaseMailUserRole at sende en e-mail. Vi kan også lave profilen som standardprofil. Når profilsikkerheden er indstillet, skal du klikke på Næste for at konfigurere systemparameteren. Se følgende billede for at se konfigurationen:

I Konfigurer systemparameter vindue, kan vi indstille et antal genforsøg, maksimal vedhæftet filstørrelse, liste over filtypenavne, der er forbudt at sende som en vedhæftet fil. Se følgende billede:

Når systemparameteren er blevet konfigureret, skal du klikke på Næste for at gennemgå hele konfigurationen og listen over handlinger. Klik på Udfør for at fuldføre konfigurationen af ​​databasens mail. Se følgende billede.

Når konfigurationen er fuldført, skal du klikke på Luk for at afslutte guiden. Se følgende billede:

Oprettelse og konfiguration af databasemail-profil og -konto ved hjælp af T-SQL

Vi kan også konfigurere databasens mailprofil og mailkonto ved hjælp af T-SQL. For at konfigurere databasemailen skal brugeren have tilladelsen 'execute' på følgende lagrede procedure.

  1. Sysmail_add_account_sp
  2. Sysmail_add_profile_sp
  3. Sysmail_add_profileaccount_sp

Sysmail_add_account_sp procedure opretter en konto til databasemailen. For at oprette en konto til databasemail skal du udføre følgende kode:

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 procedure opretter en databasemail-profil. For at oprette en databasemail-profil skal du udføre følgende kode:

-- 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 procedure tilføjer SMTP-kontoen til en databasemail-profil. For at tilføje SMTP-konto til databasens mailprofil skal du udføre følgende kode:

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

Afsendelse af testmail ved hjælp af databasemail

Når databasemailen er konfigureret, som jeg nævnte tidligere, til at sende en e-mail, skal brugeren oprettes i MSDB-databasen, og denne bruger skal være medlem af DatabaseMailUserRole . Det giver en databasebruger mulighed for at sende e-mails ved hjælp af Database Mail. Databasebrugeren skal have en eksekveret tilladelse til følgende lagrede procedurer, der bruges til at administrere databasemail:

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

For at sende en test-e-mail ved hjælp af SSMS skal du åbne SQL Server Management Studio>> Udvid Management i SQL Server Management>> Højreklik på Database Mail og vælg Send testmail . Se følgende billede:

Send test-e-mail dialogboksen åbnes. IDatabase Mail Profile rullemenuen, vælg navnet på den profil, der bruges til at sende en e-mail (Database Mail Profile), iTil tekstboks skal du angive e-mail-modtagerens e-mail-adresse og klikke på Send testmail . Se følgende billede:

Vi kan også sende e-mail med T-SQL-kode. For at gøre det skal du udføre følgende T-SQL-script:

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

Liste over vigtige tabeller til at kontrollere e-mail-statussen

Følgende er listen over tabeller, der bruges til at se konfigurationsdatabasemail, databasekonto og status for e-mailen.

[tabel id=53 /]

For at se databasens maillog skal du åbne SQL Server Management studio>> udvide Management>> Højreklik på Database-mail og vælg Se Database Mail Log . Se følgende billede:

Logfilfremviser dialog åbnes, som vist på følgende billede:

Sletning af databasepostkonto og -profil

For at slette Database Mail-profilen skal du først slippe Database Mail-profilen. For at gøre det skal du åbne Configure Database Mail Wizard, som forklaret i begyndelsen af ​​artiklen. I guiden skal du vælge Administrer databasepostkonto og -profiler og klik på Næste . Se følgende billede:

Administrer profiler og konto s side, vælg Vis ændring eller slet en eksisterende profil og klik på Næste . Se følgende billede:

Administrer eksisterende profil siden, skal du vælge navnet på den profil, som du vil slette fra Profilnavn rullemenuen, og klik på Slet knappen og klik på Næste. Se følgende billede:

Dernæst vil skærmen vise handlingens sommeroversigt, gennemgå oversigten og klikke på Udfør for at droppe profilen. Se følgende billede:

Når du har slettet databasens mailprofil, skal du slippe databasekontoen. For at gøre det, på Open Database Mail Configuration Wizard>> vælg Administrer databasepostkonti og -profil>> Vælg Se, rediger eller slet en eksisterende konto og klik på Næste. Se følgende billede:

Administrer eksisterende konto siden fra Kontonavn rullemenuen, vælg navnet på den konto, du vil slette, og klik på Slet knappen, som vist på følgende billede:

Det følgende skærmbillede vil vise handlingens sommeroversigt, gennemgå oversigten og klikke på Udfør for at droppe kontoen. Se følgende billede:

Sletning af databasepostkonto og -profil ved hjælp af T-SQL

Du kan også droppe databasens mailkonto og databasemailprofilen ved at udføre T-SQL Script. For at slette databaseprofilen og kontoen skal du udføre følgende kode:

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

For at bekræfte, at databasemail og databasekonto er blevet slettet, skal du udføre følgende forespørgsel:

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'

Oversigt

I denne artikel har jeg forklaret:

  1. Hvad er Database Mail og dens formål?
  2. Forudsætninger for at konfigurere Database Mail.
  3. Konfigurer Database Mail-konto og Database Mail Profile ved hjælp af SQL Server Management Studio.
  4. Konfigurer Database Mail-konto og Database Mail Profile ved hjælp af T-SQL.
  5. Send test-e-mail ved hjælp af SSMS og T-SQL.
  6. Slip med stor tilfredshed Database Mail-profil og Database Mail-konto.

  1. ændre størrelsen på datatype i sql

  2. Hvad er rækkefølgen af ​​poster i en tabel med en sammensat primærnøgle

  3. Se om en tabel har en DEFAULT Constraint i SQL Server ved hjælp af OBJECTPROPERTY()

  4. Hvordan giver man en unik begrænsning til en kombination af kolonner i Oracle?