SQL Server Database Mail е въведен в SQL Server 2005. Database Mail е компонент, който може да изпраща имейли с помощта на SQL Server Engine. Използвайки Database Mail, администратор или разработчик може да изпрати изход на заявка до краен потребител. DBA могат да го конфигурират, за да получавате имейл сигнали и известия. Database Mail използва SMTP (Simple Mail Transfer Protocol) за доставка на имейли до получателите.
В тази статия ще демонстрирам как да конфигурирате SQL Server Database Mail.
Предварителни условия за активиране на поща от база данни
За да активирате функцията за поща в базата данни, са необходими следните предпоставки:
- Service Broker за MSDB база данни трябва да бъде активирана.
- Услугата SQL Server Agent трябва да работи.
Service Broker трябва да бъде активиран
Database Mail изисква брокер на услуги да постави имейли на опашка. Ако посредникът на услугите е деактивиран, пощата на базата данни не може да достави съобщенията на брокера на услуги и остава в опашката на посредника на услуги.
За да проверите, че брокерът на услуги е активиран, изпълнете следната заявка:
ИЗПОЛЗВАЙТЕ master go SELECT database_id КАТО 'ИД на базата данни', NAME КАТО 'Име на базата данни', CASE WHEN is_broker_enabled =0 THEN 'Service Broker е деактивиран.' WHEN is_broker_enabled =1 THEN 'Service Broker е активиран.' КРАЙ КАТО „Състояние на брокера на услуги“ ОТ sys.databases, КЪДЕТО ИМЕ ='msdb.'
Резултатът изглежда по следния начин:
Ако брокерът на услуги в базата данни MSDB е деактивиран, изпълнете следните заявки последователно, за да активирате посредника на услуги:
Използване на база данни mastergoalter [MSDB] set single_user с rollback immediateGOalter база данни [MSDB] set Enable_BrokerGOalter база данни [MSDB] set multi_user с rollback immediateGO
Услугата на агент на SQL Server трябва да работи
Database Mail изпраща имейли или съобщения с помощта на услугата агент на SQL Server. Ако услугите на агента не се изпълняват, тогава SQL Server не може да изпраща имейли. Докато услугата на агента не се изпълнява, всички съобщения ще бъдат поставени на опашка и когато услугата на агента започне, всички съобщения на опашката ще бъдат доставени.
За да проверите състоянието на услугата на агента, изпълнете следната команда в студиото за управление на SQL Server.
използвайте mastergoEXEC xp_servicecontrol N'querystate',N'SQLAgent$CMS'
Резултатът изглежда по следния начин:
Ако услугата за агент на SQL Server не работи, тогава трябва да я стартираме. За да стартирате услугата SQL Server Agent, отворете Services , отидете на Контролен панел>> Инструменти за администриране>> Услуги . В списъка с услуги потърсете SQL Server Agent . Щракнете с десния бутон върху SQL Server Agent и изберете Старт както е показано на следното изображение:
След като брокерът на услуги е активиран и SQL Agent Service стартира, активирайте имейла на базата данни, като промените конфигурационния параметър на екземпляра на базата данни. По подразбиране функцията за имейл на базата данни не е активирана. Тя трябва да бъде активирана чрез промяна на стойността на конфигурацията на Database Mail XPs от 0 до 1. Отново Database Mail XPs параметърът е разширена опция; следователно, преди да го промените, променете Показване на разширените опции конфигурационен параметър от 0 до 1.
За да активирате пощата от базата данни, изпълнете последователно следните заявки:
ИЗПОЛЗВАЙТЕ masterGoEXEC sp_configure 'показване на разширени опции', 1 --Активиране на предварителна опцияGoRECONFIGUREGoEXEC sp_configure 'Поща на база данни XPs', 1 --Активиране на опцията за поща на база данниGoRECONFIGUREGoEXEC sp_configure 'показване на разширени опции', 0GUREGopreconfigured advanced -- 0GUREGopreCONF.След като Database Mail е активирана, създайте пощенски профил на база данни и имейл акаунт в базата данни.
Конфигуриране на поща от база данни
След като всички предпоставки са изпълнени, конфигурирайте имейл акаунта на базата данни и пощенския профил на базата данни.
Създаване на профил и акаунт за поща в база данни
За да конфигурирате имейл акаунта на базата данни и пощенския профил на базата данни, отворете SQL Server Management Studio. В Object Explorer разгънете Управление и щракнете с десния бутон върху Конфигуриране на поща от база данни , както е показано на следното изображение:
Съветникът за конфигуриране на поща в базата данни диалогов прозорец се отваря. В диалоговия прозорец изберете Настройка на пощата на базата данни, като изпълните следните задачи бутон за избор и щракнете върху Напред .
Сега в Нов профил диалогов прозорец, посочете име на профил, описание, което не е задължително, и щракнете върху Добавяне бутон, за да създадете SMTP акаунт. Можете да конфигурирате множество SMTP акаунти. Когато пощата от базата данни изпраща имейл, тя използва SMTP акаунта въз основа на приоритета, посочен в SMTP акаунта изглед на мрежа. Ако даден акаунт не успее при изпращане на имейл, профилът използва следващия акаунт в списъка с приоритети. Вижте следното изображение:
В Нов акаунт за поща в база данни диалогов прозорец, посочете подходящо Име на акаунт , Описание (по избор), Имейл адрес , Показване на име , Имейл за отговор (По избор), SMTP сървър и Номер на порт . Ако SMTP сървърът използва SSL/TSL удостоверяване, отметнете Сървърът изисква защитено удостоверяване опция. В списъка за удостоверяване изберете тип удостоверяване, използвано за удостоверяване на SMTP сървъра и щракнете върху OK . Вижте следното изображение:
Обратно в Съветника за конфигуриране на поща на базата данни диалогов прозорец, SMTP акаунтът ще бъде посочен в SMTP акаунти изглед на мрежа. Вижте следното изображение:
Кликнете върху Напред за да конфигурирате сигурността на пощенския профил на базата данни. Можем да конфигурираме имейл профила на базата данни, частен или публичен. Само конкретен потребител или роля може да изпраща имейл чрез Използване на личен профил. Всеки потребител на база данни или роля може да изпраща имейл, използвайки публичен профил. Потребителите трябва да бъдат създадени в базата данни MSDB и тези потребители трябва да са членове на роля на база данни с име DatabaseMailUserRole да изпратите имейл. Можем също да направим профила като профил по подразбиране. След като защитата на профила е зададена, щракнете върху Напред за да конфигурирате системния параметър. Вижте следното изображение, за да видите конфигурацията:
В Конфигуриране на системен параметър прозорец, можем да зададем брой опити за повторен опит, максимален размер на прикачения файл, списък с разширения на файлове, които е забранено да се изпращат като прикачен файл. Вижте следното изображение:
След като системният параметър е конфигуриран, щракнете върху Напред за преглед на цялата конфигурация и списък с действия. Кликнете върху Край за да завършите конфигурацията на пощата на базата данни. Вижте следното изображение.
След като конфигурацията приключи, щракнете върху Затваряне за да излезете от съветника. Вижте следното изображение:
Създаване и конфигуриране на пощенски профил и акаунт на база данни с помощта на T-SQL
Можем също да конфигурираме пощенския профил на базата данни и пощенския акаунт с помощта на T-SQL. За да конфигурира пощата на базата данни, потребителят трябва да има разрешение за „изпълнение“ на следната съхранена процедура.
- Sysmail_add_account_sp
- Sysmail_add_profile_sp
- Sysmail_add_profileaccount_sp
Sysmail_add_account_sp процедура създава акаунт за поща в базата данни. За да създадете акаунт за поща в базата данни, изпълнете следния код:
EXEC msdb.dbo.sysmail_add_account_sp @account_name ='SMTP акаунт по подразбиране на базата данни' , @description ='Този акаунт ще се използва за изпращане на поща от базата данни' , @email_address ='[email protected]' , @display_name =' Поддръжка на DBA' , @replyto_address ='' , @mailserver_type ='SMTP' , @mailserver_name ='192.168.1.60' , @port =25GoSysmail_add_profile_sp процедура създава пощенски профил на база данни. За да създадете пощенски профил на база данни, изпълнете следния код:
-- Създайте профил за поща в база данни EXEC msdb.dbo.sysmail_add_profile_sp @profile_name ='Профил на база данни' , @description ='Този профил ще се използва за изпращане на имейли от база данни'GoSysmail_add_profileaccount_sp процедура добавя SMTP акаунта към пощенски профил на база данни. За да добавите SMTP акаунт към пощенския профил на базата данни, изпълнете следния код:
-- Добавете акаунта към профила EXEC msdb.dbo.sysmail_add_profileaccount_sp @profile_name ='Профил на поща в базата данни' , @account_name ='SMTP акаунт по подразбиране на базата данни' , @sequence_number =1GoИзпращане на пробна поща с помощта на Database Mail
След като пощата на базата данни е конфигурирана, както споменах по-рано, за изпращане на имейл, потребителят трябва да бъде създаден в базата данни MSDB и този потребител трябва да е член на DatabaseMailUserRole . Той позволява на потребител на база данни да изпраща имейли с помощта на Database Mail. Потребителят на базата данни трябва да има издадено разрешение за следните съхранени процедури, използвани за управление на пощата от базата данни:
- sysmail_help_status_sp
- sysmail_delete_mailitems_sp
- sysmail_allitems
- sysmail_event_log
- sysmail_faileditems
- sysmail_mailattachments
- sysmail_sentitems
- sysmail_unsentitems
За да изпратите тестов имейл чрез SSMS, отворете SQL Server Management Studio>> Разгънете Управление в SQL Server Management>> Щракнете с десния бутон върху Database Mail и изберете Изпращане на тестова поща . Вижте следното изображение:
Изпращане на тестов имейл диалогов прозорец се отваря. Впрофила на базата данни падащото меню изберете името на профила, използван за изпращане на имейл (Профил на поща в базата данни), ВДо текстово поле, посочете имейл адреса на получателя на имейла и щракнете върху Изпращане на тестово съобщение . Вижте следното изображение:
Можем също да изпращаме имейл с T-SQL код. За да направите това, изпълнете следния T-SQL скрипт:
използвайте MSDBgoEXEC msdb.dbo.sp_send_dbmail @profile_name ='Пощенски профил на базата данни' , @recipients ='[email protected]' , @subject ='Автоматични резултати от теста (успешни)' , @body процедурата =завършена' успешно.'Go
Списък с основни таблици за проверка на състоянието на имейла
Следва списъкът с таблици, използвани за преглед на пощата на конфигурационната база данни, акаунта в базата данни и състоянието на имейла.
[table id=53 /]
За да видите пощенския дневник на базата данни, отворете SQL Server Management Studio>> разгънете Управление>> Щракнете с десния бутон върху Поща от база данни и изберете Преглед на пощенския дневник на базата данни . Вижте следното изображение:
Преглед на регистрационни файлове се отваря диалогов прозорец, както е показано на следното изображение:
Премахване на пощенски акаунт и профил в базата данни
За да премахнете профила на Database Mail, първо пуснете профила на Database Mail. За да направите това, отворете Configure Database Mail Wizard както е обяснено в началото на статията. В съветника изберете Управление на акаунт и профили за поща в база данни и щракнете върху Напред . Вижте следното изображение:
В Управление на профили и акаунт на страница, изберете Преглед на промяна или изтриване на съществуващ профил и щракнете върху Напред . Вижте следното изображение:
В Управление на съществуващ профил страница, изберете името на профила, който искате да изтриете, от Име на профил падащото меню и щракнете върху Изтриване и кликнете върху Напред. Вижте следното изображение:
След това на екрана ще се покаже летното действие, прегледайте обобщението и щракнете върху Край за да махнете профила. Вижте следното изображение:
След изтриване на пощенския профил на базата данни, махнете акаунта в базата данни. За да направите това, в Отворете съветника за конфигуриране на поща на база данни>> изберете Управление на акаунти и профил на база данни>> Изберете Преглед, промяна или изтриване на съществуващ акаунт опция и щракнете върху Напред. Вижте следното изображение:
В Управление на съществуващ акаунт страница от Име на акаунт падащото меню, изберете името на акаунта, който искате да изтриете, и щракнете върху Изтриване бутон, както е показано на следното изображение:
Следващият екран ще покаже летните действия, прегледайте обобщението и щракнете върху Край да зарежеш сметката. Вижте следното изображение:
Премахване на пощенски акаунт и профил в базата данни с помощта на T-SQL
Можете също да премахнете имейл акаунта на базата данни и пощенския профил на базата данни, като изпълните T-SQL Script. За да премахнете профила на базата данни и акаунта, изпълнете следния код:
АКО СЪЩЕСТВУВА(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 a W pa.account_id. name ='Пощенски профил на базата данни' И a.name ='Профил на SMTP по подразбиране на базата данни') ЗАПОЧНЕТЕ ИЗПЪЛНЯВАНЕ msdb.dbo.sysmail_delete_profileaccount_sp @profile_name ='Профил на поща в базата данни',@account_name ='Пощенски профил в базата данни',@account_name ='Пощенски акаунт в базата данни'ENDS IFSMTP акаунт по подразбиране SELECT * FROM msdb.dbo.sysmail_account WHERE name ='Database Mail по подразбиране SMTP акаунт') BEGIN EXECUTE msdb.dbo.sysmail_delete_account_sp @account_name ='Поща за SMTP акаунт по подразбиране в базата данни' END IF IF EXISTS FROMmsdfile. ='Пощенски профил в базата данни') BEGIN EXECUTE msdb.dbo.sysmail_delete_profile_sp @profile_name ='Пощенски профил в базата данни' END
За да проверите, че пощата и акаунтът в базата данни са премахнати, изпълнете следната заявка:
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 =WHERE pcount_name. Профил за поща на база данни' AND a.name ='SMTP акаунт по подразбиране на база данни'
Резюме
В тази статия обясних:
- Какви са Database Mail и предназначението му?
- Предварителни условия за конфигуриране на Database Mail.
- Конфигурирайте акаунта на Database Mail и профила на Database Mail с помощта на студио за управление на SQL Server.
- Конфигурирайте акаунт в база данни за поща и профил на база данни с помощта на T-SQL.
- Изпратете тестов имейл с помощта на SSMS и T-SQL.
- Изящно махнете профила на Database Mail и акаунта в Database Mail.