SQL Server има опция за поща в базата данни, която можете да използвате за изпращане на поща от сървъра на базата данни.
Например, можете да получавате известия, когато заданията на SQL Server Agent завършат изпълнението или се провалят, или когато има грешка с висока сериозност и т.н.
Когато Database Mail не е конфигуриран
В SQL Server пощата се изпраща чрез изпълнение на sp_send_dbmail
съхранена процедура в msdb
база данни.
Ето един пример:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = 'Your favorite SQL Server Agent job just failed',
@subject = 'SQL Server Agent Job: FAILED';
Това обаче предполага, че SQL Server е конфигуриран да изпраща поща.
Ако се опитате да изпратите поща от SQL Server, но получите грешка като следната, това означава, че в момента не сте активирали Database Mail.
Msg 15281, Level 16, State 1, Procedure msdb.dbo.sp_send_dbmail, Line 0 SQL Server blocked access to procedure 'dbo.sp_send_dbmail' of component 'Database Mail XPs' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Database Mail XPs' by using sp_configure. For more information about enabling 'Database Mail XPs', search for 'Database Mail XPs' in SQL Server Books Online.
Активиране на Database Mail XPs
Преди да започнете да изпращате поща от сървъра, трябва да се уверите, че сте активирали Database Mail XPs.
Това е доста лесно да се направи (въпреки че Microsoft препоръчва разширените опции като тази да се променят само от опитен администратор на база данни или сертифициран техник на SQL Server).
Ето как да активирате Database Mail XPs:
EXEC sp_configure 'show advanced options', '1';
RECONFIGURE
GO
EXEC sp_configure 'Database Mail XPs', 1;
RECONFIGURE
GO
Резултат:
Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install. Commands completed successfully. Commands completed successfully.
Създаване на имейл акаунт, профил и т.н.
Пощата от базата данни се изпраща чрез профил, а не директно чрез потребителски акаунт.
За да изпращате имейл с Database Mail, трябва да създадете акаунт в Database Mail, профил на Database Mail, да добавите акаунта към профила и след това да предоставите потребителски достъп до този профил. Потребителят трябва да е в msdb
база данни.
T-SQL кодът за това може да изглежда така:
-- Switch to the msdb database
USE msdb;
-- Create a user on the msdb database
CREATE USER Marge FOR LOGIN Marge;
-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'DB Admin',
@description = 'Mail account for admin emails.',
@email_address = '[email protected]',
@replyto_address = '[email protected]',
@display_name = 'DB Automated Mailer',
@mailserver_name = 'smtp.example.com',
@port = 25;
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'DB Admin Profile',
@description = 'Profile for admin emails.';
-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'DB Admin Profile',
@account_name = 'DB Admin',
@sequence_number = 1;
-- Grant the msdb user access to the Database Mail profile
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'DB Admin Profile',
@principal_name = 'Marge',
@is_default = 1;
Ще трябва да замените различните детайли със свои собствени. Това също предполага, че сте посочили пощенски сървър, който работи.
След като направите това, трябва да можете да изпращате поща с msdb.dbo.sp_send_dbmail
съхранена процедура.