sql >> Database >  >> RDS >> Sqlserver

Database-e-mail configureren in SQL Server

SQL Server Database Mail is geïntroduceerd in SQL Server 2005. Database Mail is een onderdeel dat e-mails kan verzenden met behulp van SQL Server Engine. Met Database Mail kan een beheerder of een ontwikkelaar query-uitvoer naar een eindgebruiker sturen. DBA's kunnen het configureren om e-mailwaarschuwingen en -meldingen te ontvangen. Database Mail gebruikt SMTP (Simple Mail Transfer Protocol) om e-mails aan ontvangers te bezorgen.

In dit artikel ga ik demonstreren hoe u SQL Server Database Mail configureert.

Vereisten om Database Mail in te schakelen

Om de database-mailfunctie in te schakelen, zijn de volgende vereisten vereist:

  1. Service Broker voor MSDB-database moet zijn ingeschakeld.
  2. SQL Server Agent-service moet actief zijn.

Service Broker moet zijn ingeschakeld

Database Mail vereist dat de servicebroker e-mails in de wachtrij plaatst. Als de service broker is uitgeschakeld, kan de database-e-mail de service broker-berichten niet afleveren en blijft deze in de service broker-wachtrij staan.
Voer de volgende query uit om te controleren of de service broker is ingeschakeld:

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

De uitvoer ziet er als volgt uit:

Als de servicebroker in de MSDB-database is uitgeschakeld, voert u de volgende query's in volgorde uit om de servicebroker in te schakelen:

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 moet actief zijn

Database Mail verzendt e-mails of berichten met behulp van de SQL Server-agentservice. Als de agentservices niet actief zijn, kan SQL Server geen e-mails verzenden. Zolang de agentservice niet actief is, worden alle berichten in de wachtrij geplaatst en wanneer de agentservice start, worden alle berichten in de wachtrij bezorgd.

Voer de volgende opdracht uit in de beheerstudio van SQL Server om de status van de agentservice te controleren.

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

De uitvoer ziet er als volgt uit:

Als de SQL Server-agentservice niet actief is, moeten we deze starten. Om de SQL Server Agent-service te starten, opent uServices , ga naar Configuratiescherm>> Beheerprogramma's>> Services . Zoek in de lijst met services naar SQL Server Agent . Klik met de rechtermuisknop op SQL Server Agent en selecteer Start, zoals weergegeven in de volgende afbeelding:

Zodra de servicebroker is ingeschakeld en SQL Agent Service is gestart, schakelt u de database-e-mail in door de configuratieparameter van het database-exemplaar te wijzigen. Standaard is de database-e-mailfunctie niet ingeschakeld. Het moet worden ingeschakeld door de configuratiewaarde van Database Mail XPs . te wijzigen van 0 tot 1. Nogmaals, de Database Mail XP's parameter is een geavanceerde optie; verander daarom, voordat u het wijzigt, de Toon geavanceerde optie configuratieparameter van 0 tot 1.

Om databasemail in te schakelen, voert u de volgende query's in volgorde uit:

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

Zodra Database Mail is ingeschakeld, maakt u een databasemailprofiel en databasemailaccount aan.

Database-e-mail configureren

Zodra aan alle vereisten is voldaan, configureert u de database-e-mailaccount en het database-e-mailprofiel.

Database-e-mailprofiel en -account maken

Om de databasemailaccount en het databasemailprofiel te configureren, opent u SQL Server Management Studio. Vouw in Objectverkenner Beheer uit en klik met de rechtermuisknop op Configureer Database Mail , zoals weergegeven in de volgende afbeelding:

De Wizard Database Mail Configuratie dialoogvenster wordt geopend. Selecteer in het dialoogvenster Setup Database Mail door de volgende taken uit te voeren keuzerondje en klik op Volgende .

Nu, in het Nieuw profiel dialoogvenster, geef een profielnaam op, een beschrijving die optioneel is en klik op de Toevoegen om een ​​SMTP-account aan te maken. U kunt meerdere SMTP-accounts configureren. Wanneer de databasemail een e-mail verzendt, gebruikt deze het SMTP-account op basis van de prioriteit die wordt vermeld in het SMTP-account rasterweergave. Als een account mislukt tijdens het verzenden van e-mail, gebruikt het profiel het volgende account in de prioriteitenlijst. Zie de volgende afbeelding:

In de Nieuwe database-e-mailaccount dialoogvenster, geef een geschikte Accountnaam op , Beschrijving (optioneel), E-mailadres , Weergavenaam , E-mail beantwoorden (Optioneel), SMTP-server en Poortnummer . Als de SMTP-server de SSL/TSL-authenticatie gebruikt, vink dan De server vereist veilige authenticatie . aan optie. Selecteer in de authenticatielijst een type authenticatie dat wordt gebruikt om de SMTP-server te authenticeren en klik op OK . Zie de volgende afbeelding:

Terug in de Wizard Database Mail Configuratie dialoogvenster, wordt het SMTP-account weergegeven in de SMTP-accounts rasterweergave. Zie de volgende afbeelding:

Klik op Volgende om de beveiliging van het e-mailprofiel van de database te configureren. We kunnen het e-mailprofiel van de database privé of openbaar configureren. Alleen een specifieke gebruiker of rol kan e-mail verzenden met Privéprofiel gebruiken. Elke databasegebruiker of -rol kan e-mail verzenden met een openbaar profiel. Gebruikers moeten zijn gemaakt in de MSDB-database en die gebruikers moeten lid zijn van een databaserol met de naam DatabaseMailUserRole een email sturen. We kunnen het profiel ook als standaardprofiel maken. Zodra de profielbeveiliging is ingesteld, klikt u op Volgende om de systeemparameter te configureren. Zie de volgende afbeelding om de configuratie te bekijken:

In de Systeemparameter configureren venster, kunnen we een aantal nieuwe pogingen instellen, de maximale bestandsgrootte van bijlagen, een lijst met bestandsextensies die niet als bijlage mogen worden verzonden. Zie de volgende afbeelding:

Nadat de systeemparameter is geconfigureerd, klikt u op Volgende om de volledige configuratie en lijst met acties te bekijken. Klik op Voltooien om de e-mailconfiguratie van de database te voltooien. Zie de volgende afbeelding.

Zodra de configuratie is voltooid, klikt u op Sluiten om de wizard te verlaten. Zie de volgende afbeelding:

Maken en configureren van een database-e-mailprofiel en account met behulp van T-SQL

We kunnen ook het e-mailprofiel van de database en het e-mailaccount configureren met behulp van T-SQL. Om de databasemail te configureren, moet de gebruiker de machtiging 'uitvoeren' hebben voor de volgende opgeslagen procedure.

  1. Sysmail_add_account_sp
  2. Sysmail_add_profile_sp
  3. Sysmail_add_profileaccount_sp

De Sysmail_add_account_sp procedure maakt een account aan voor de databasemail. Voer de volgende code uit om een ​​account voor databasemail aan te maken:

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

De Sysmail_add_profile_sp procedure maakt een database-e-mailprofiel aan. Voer de volgende code uit om een ​​database-e-mailprofiel te maken:

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

De Sysmail_add_profileaccount_sp procedure voegt de SMTP-account toe aan een database-e-mailprofiel. Voer de volgende code uit om een ​​SMTP-account toe te voegen aan het e-mailprofiel van de database:

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

Testmail verzenden met Database Mail

Zodra de databasemail is geconfigureerd, zoals ik eerder al zei, om een ​​e-mail te verzenden, moet de gebruiker zijn gemaakt in de MSDB-database en moet deze gebruiker lid zijn van DatabaseMailUserRole . Hiermee kan een databasegebruiker e-mails verzenden met behulp van Database Mail. De databasegebruiker moet een uitgevoerde machtiging hebben voor de volgende opgeslagen procedures, die worden gebruikt om databasemail te beheren:

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

Als u een test-e-mail wilt verzenden met SSMS, opent u SQL Server Management Studio>> Uitvouwen Beheer in SQL Server Management>> Klik met de rechtermuisknop op Database Mail en selecteer Testmail verzenden . Zie de volgende afbeelding:

DeTest-e-mail verzenden dialoogvenster wordt geopend. In hetdatabase-e-mailprofiel vervolgkeuzelijst, selecteer de naam van het profiel dat wordt gebruikt om een ​​e-mail te verzenden (Database Mail Profile), In de Aan tekstvak, geef het e-mailadres van de e-mailontvanger op en klik op Testmail verzenden . Zie de volgende afbeelding:

We kunnen ook e-mail verzenden met T-SQL-code. Voer hiervoor het volgende T-SQL-script uit:

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

Lijst met essentiële tabellen om de e-mailstatus te controleren

Hieronder volgt de lijst met tabellen die worden gebruikt om de configuratiedatabase-mail, het database-account en de status van de e-mail te bekijken.

[tabel id=53 /]

Om het e-maillogboek van de database te bekijken, opent u SQL Server Management studio>> uitvouwen Beheer>> Klik met de rechtermuisknop op Database-e-mail en selecteer Bekijk database-e-maillogboek . Zie de volgende afbeelding:

De Logbestandviewer dialoogvenster wordt geopend, zoals weergegeven in de volgende afbeelding:

Database-e-mailaccount en profiel laten vallen

Om het Database Mail-profiel te verwijderen, moet u eerst het Database Mail-profiel verwijderen. Open hiervoor de Wizard Database Mail configureren, zoals uitgelegd aan het begin van het artikel. Selecteer in de wizard Beheer Database Mail-account en profielen en klik op Volgende . Zie de volgende afbeelding:

Op de Beheer profielen en account s pagina, selecteer Bekijk Wijzigen of verwijder een bestaand profiel en klik op Volgende . Zie de volgende afbeelding:

Op de Bestaand profiel beheren pagina, selecteer de naam van het profiel dat u wilt verwijderen uit de Profielnaam vervolgkeuzelijst en klik op Verwijderen en klik op Volgende. Zie de volgende afbeelding:

Vervolgens toont het scherm de samenvatting van de actie, bekijk de samenvatting en klik op Voltooien om het profiel te laten vallen. Zie de volgende afbeelding:

Na het verwijderen van het database-e-mailprofiel, laat u het database-account vallen. Om dat te doen, op Open Database Mail Configuration Wizard>> selecteer Beheer Database Mail-accounts en Profiel>> Kies de Bekijk, wijzig of verwijder een bestaand account optie en klik op Volgende. Zie de volgende afbeelding:

Op het Bestaande account beheren pagina, van de Accountnaam vervolgkeuzelijst, selecteer de naam van het account dat u wilt verwijderen en klik op Verwijderen knop, zoals weergegeven in de volgende afbeelding:

Het volgende scherm toont de samenvatting van de actie, bekijk de samenvatting en klik op Voltooien om de rekening te laten vallen. Zie de volgende afbeelding:

Database-e-mailaccount en profiel verwijderen met T-SQL

U kunt het databasemailaccount en het databasemailprofiel ook laten vallen door T-SQL Script uit te voeren. Voer de volgende code uit om het databaseprofiel en de account te verwijderen:

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

Voer de volgende query uit om te controleren of de databasemail en het databaseaccount zijn verwijderd:

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'

Samenvatting

In dit artikel heb ik uitgelegd:

  1. Wat is Database Mail en het doel ervan?
  2. Vereisten om Database Mail te configureren.
  3. Configureer Database Mail-account en Database Mail-profiel met behulp van SQL Server Management Studio.
  4. Configureer Database Mail-account en Database Mail-profiel met T-SQL.
  5. Test-e-mail verzenden met SSMS en T-SQL.
  6. Laat Database Mail-profiel en Database Mail-account sierlijk vallen.

  1. Hoe de tekenset en sortering van een tabel in MySQL in te stellen?

  2. Lente 2011 PostgreSQL-conferenties, VS/Canada

  3. Php - Uw PHP-installatie lijkt de MySQL-extensie te missen die vereist is voor WordPress

  4. Doorloop klembordring in SQL Server Management Studio (SSMS) - SQL Server / TSQL-zelfstudie, deel 8