数据库邮件是从 SQL Server数据库引擎中发送电子邮件的企业解决方案。通过使用数据库邮件,数据库应用程序可以向用户发送电子邮件。邮件中可以包含查询结果,还可以包含来自网络中任何资源的文件。
1、数据库邮件配置
使用SQL Server Management Studio连接到数据库服务器后,可按下面示意图一步步配置数据库邮件。
(1)、在SQL Server Management Studio的数据库实例的管理菜单下,选中数据库邮件菜单,然后邮件选择:配置数据库邮件。
(2)、在选择配置任务页面,选择通过执行以下任务来安装数据库邮件。
(3)、在新建配置文件界面,首先录入配置文件名及说明信息,然后点击下图所示“添加”按钮,开始添加当前配置文件对应的SMTP账户。
(4)、按下图所示,录入SMTP账户信息,其中最重要的是服务器名称选项。若使用当前流行的邮件服务提供商的SMTP服务,则一般还需要在基本身份验证部分录入邮箱账户身份信息。
(5)、在上一步添加完账户信息并点击确定后,新增的账户信息将列示在下图的SMTP账户列表中。一个配置文件是可以和多个账户关联的,因而可以重复前面步骤添加其它SMTP账户信息。
(6)、在该步骤选择“公共”复选框及“默认配置文件”。
(7)、此步骤主要是配置数据库邮件参数,若无特殊要求,默认即可。
(8)、下图展示刚配置的信息。
(9)、系统开始根据前面的配置信息自动配置系统。如果一切ok,将会展示类似下图信息,点击关闭完成配置。
(10)、按照上述步骤,配置好数据库邮件后,可进行数据库邮件测试,以确认配置是否完全正确。在SQL Server Management Studio的数据库实例的管理菜单下,选中数据库邮件菜单,然后邮件选择:发送测试电子邮件…。
(11)、在弹出的测试邮件发送配置界面,维护好相关信息后,点击“发送测试电子邮件”功能按钮开始发生邮件。
(12)、系统对测试电子邮件进行列队以进行发送。
(13)、如果一切顺利,过一会,一般为1分钟左右,将可以在邮箱内容收到一份主题为:“数据库邮件测试”的邮件,如下图所示。
2、数据库邮件应用
应用业务场景1:业务数据库数据达到一定数量级后,进行邮件发送提醒。
使用SQL Server Management Studio连接到数据库服务器后,可按下面示意图一步步配置以创建一个作业,通过作业执行特定语句,进行邮件发送。
(1)、在SQL Server Management Studio的数据库实例的管理菜单下,选中SQL Server代理→作业菜单,右击作业菜单,然后点击“新建作业”。
(2)、在作业属性/常规属性页,维护好作业的名称等信息。
(3)、在作业属性/步骤属性页,维护作业步骤及作业命令。
本文示例SQL:
USE msdb
GO
DECLARE @cnt INT;
DECLARE @emailBody VARCHAR(4000);
SELECT @cnt=COUNT(*) FROM ng0002.dbo.secuser;
IF @cnt>100
BEGIN
SELECT @emailBody='数据库用户表记录数已达:'+convert(varchar,@cnt) ;
Exec dbo.sp_send_dbmail
@profile_name='SQLMailConfig',
@recipients='subscriber@126.com',
@subject='用户数预警',
@body=@emailBody
END
GO
DECLARE @cnt INT;
DECLARE @emailBody VARCHAR(4000);
SELECT @cnt=COUNT(*) FROM ng0002.dbo.secuser;
IF @cnt>100
BEGIN
SELECT @emailBody='数据库用户表记录数已达:'+convert(varchar,@cnt) ;
Exec dbo.sp_send_dbmail
@profile_name='SQLMailConfig',
@recipients='subscriber@126.com',
@subject='用户数预警',
@body=@emailBody
END
(4)、在作业属性/计划属性页,维护作业的执行计划。
(5)、待数据库作业成功执行后,将会收到一份类似下图的邮件:
应用业务场景2:将数据库查询结果以附件形式投递到指定邮箱USE msdbGOExec msdb.dbo.sp_send_dbmail@profile_name='SQLMailConfig',@recipients='subscriber@126.com',@query='select logid,u_name from ng0002.dbo.secuser',@subject='用户数预警',@body='查询结果,详见附件',@attach_query_result_as_file =1,--查询结果以附件形式发送@query_attachment_filename ='查询结果.Txt'--邮件附件名称GO
PS:
数据库邮件发送存储(sp_send_dbmail)详细技术参数可参考以下网站:
http://msdn.microsoft.com/zh-cn/library/ms190307.aspx