/*
Turn on database mail
*/
-- Select the correct database
USE [msdb]
GO
-- Just shows standard options
sp_configure
GO
-- Turn on advance options
sp_configure 'show advanced options', 1;
GO
-- Reconfigure server
RECONFIGURE;
GO
-- Turn on database xp's
sp_configure 'Database Mail XPs', 1;
GO
-- Reconfigure server
RECONFIGURE
接下来,创建一个电子邮件帐户:
/*
Creating mail account with Send Grid SMTP server
*/
-- Create a Database Mail account 1
EXEC msdb.dbo.sysmail_add_account_sp
@account_name = 'act_Default_Email',
@description = 'Mail account for use by all database users.',
@email_address = '[email protected]',
@replyto_address = '[email protected]',
@display_name = 'SQL SERVER (IAAS-SQL16DEV)',
@mailserver_name = 'smtp.sendgrid.net',
@username = '[email protected]',
@password = 'enter your unique password';
GO
-- Show the new mail accounts
EXEC msdb.dbo.sysmail_help_account_sp;
GO
此外,您需要配置一个邮件配置文件。
/*
Creating a mail profile
*/
-- Create a Database Mail profile
EXEC msdb.dbo.sysmail_add_profile_sp
@profile_name = 'prf_Default_Email',
@description = 'Profile used for administrative mail.' ;
GO
-- Show the new mail profile
EXEC msdb.dbo.sysmail_help_profile_sp;
GO
下一步是将电子邮件帐户链接到个人资料:
/*
Linking the mail profile to the account
*/
-- Add the account 1 to the profile
EXEC msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'prf_Default_Email',
@account_name = 'act_Default_Email',
@sequence_number = 1 ;
GO
-- Show the link between profile and accounts
EXEC msdb.dbo.sysmail_help_profileaccount_sp @profile_name = 'prf_Default_Email';
下一步,配置数据库邮件以授予对邮件配置文件的公共访问权限。这允许数据库用户发送邮件。
/*
Given public access to profile
*/
-- Grant access to the profile to all users in the msdb database
EXEC msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'prf_Default_Email',
@principal_name = 'public',
@is_default = 1 ;
-- Show the new default profile
EXEC msdb.dbo.sysmail_help_principalprofile_sp
最后使用下面的代码来验证这个解决方案。
/*
Send test message
*/
-- Plain text message
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'prf_Default_Email',
@recipients = '[email protected]',
@body = 'The stored procedure finished successfully.',
@subject = 'Automated Success Message' ;
GO
数据库邮件在 Azure IaaS 上的 SQL Server 上可用,我的建议是使用 SendGrid 电子邮件传递服务(可在 Azure 市场上获得)来配置它,该服务为您的虚拟机提供 SMTP 中继。利用此服务设置数据库邮件以满足您的警报或报告需求。
在这里,您将了解如何在 Microsoft Azure 上设置 SendGrid 服务。
设置好 SendGrid 服务后,您可以在 SQL Server VM 上对其进行配置,如下所示。
首先在 sp_configure 上启用它:
接下来,创建一个电子邮件帐户:
此外,您需要配置一个邮件配置文件。
下一步是将电子邮件帐户链接到个人资料:
下一步,配置数据库邮件以授予对邮件配置文件的公共访问权限。这允许数据库用户发送邮件。
最后使用下面的代码来验证这个解决方案。
是的,它具有 SMTP 服务器的一项限制。请阅读这两篇文章以解决问题。除了 SMTP 服务器,我不知道 Azure Cloud 上的本地和 SQL Server 之间有什么区别。
在线排查 Azure图书中的出站 SMTP 连接问题
John Doyle在 Azure 虚拟机上设置 SMTP 服务器