数据库邮件是从 SQL Server数据库引擎中发送电子邮件的企业解决方案。通过使用数据库邮件,数据库应用程序可以向用户发送电子邮件。邮件中可以包含查询结果,还可以包含来自网络中任何资源的文件。

1、数据库邮件配置

    使用SQL Server Management Studio连接到数据库服务器后,可按下面示意图一步步配置数据库邮件。

(1)、在SQL Server Management Studio的数据库实例的管理菜单下,选中数据库邮件菜单,然后邮件选择:配置数据库邮件。

clip_p_w_picpath002[17]

(2)、在选择配置任务页面,选择通过执行以下任务来安装数据库邮件。


clip_p_w_picpath004[4]

(3)、在新建配置文件界面,首先录入配置文件名及说明信息,然后点击下图所示“添加”按钮,开始添加当前配置文件对应的SMTP账户。

clip_p_w_picpath006[4]

(4)、按下图所示,录入SMTP账户信息,其中最重要的是服务器名称选项。若使用当前流行的邮件服务提供商的SMTP服务,则一般还需要在基本身份验证部分录入邮箱账户身份信息。

clip_p_w_picpath008[4]

(5)、在上一步添加完账户信息并点击确定后,新增的账户信息将列示在下图的SMTP账户列表中。一个配置文件是可以和多个账户关联的,因而可以重复前面步骤添加其它SMTP账户信息。

clip_p_w_picpath010[4]

(6)、在该步骤选择“公共”复选框及“默认配置文件”。

clip_p_w_picpath012[4]

(7)、此步骤主要是配置数据库邮件参数,若无特殊要求,默认即可。

clip_p_w_picpath014[4]

(8)、下图展示刚配置的信息。

clip_p_w_picpath016[4]

(9)、系统开始根据前面的配置信息自动配置系统。如果一切ok,将会展示类似下图信息,点击关闭完成配置。

clip_p_w_picpath018[4]

(10)、按照上述步骤,配置好数据库邮件后,可进行数据库邮件测试,以确认配置是否完全正确。在SQL Server Management Studio的数据库实例的管理菜单下,选中数据库邮件菜单,然后邮件选择:发送测试电子邮件…。

clip_p_w_picpath020[4]

(11)、在弹出的测试邮件发送配置界面,维护好相关信息后,点击“发送测试电子邮件”功能按钮开始发生邮件。

clip_p_w_picpath022[4]

(12)、系统对测试电子邮件进行列队以进行发送。

clip_p_w_picpath024[4]

(13)、如果一切顺利,过一会,一般为1分钟左右,将可以在邮箱内容收到一份主题为:“数据库邮件测试”的邮件,如下图所示。

clip_p_w_picpath026[4]

2、数据库邮件应用

    应用业务场景1:业务数据库数据达到一定数量级后,进行邮件发送提醒。

    使用SQL Server Management Studio连接到数据库服务器后,可按下面示意图一步步配置以创建一个作业,通过作业执行特定语句,进行邮件发送。

(1)、在SQL Server Management Studio的数据库实例的管理菜单下,选中SQL Server代理→作业菜单,右击作业菜单,然后点击“新建作业”。

clip_p_w_picpath028[4]

(2)、在作业属性/常规属性页,维护好作业的名称等信息。

clip_p_w_picpath030[4]

(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

clip_p_w_picpath032[4]

(4)、在作业属性/计划属性页,维护作业的执行计划。

clip_p_w_picpath034[4]

(5)、待数据库作业成功执行后,将会收到一份类似下图的邮件:

clip_p_w_picpath036[4]

 

应用业务场景2:将数据库查询结果以附件形式投递到指定邮箱

USE msdb

GO

Exec 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_p_w_upload_filename ='查询结果.Txt'--邮件附件名称

GO

PS:

     数据库邮件发送存储(sp_send_dbmail)详细技术参数可参考以下网站:http://msdn.microsoft.com/zh-cn/library/ms190307.aspx