代码改变世界

用SQL2005发送邮件

2007-03-29 10:11  Rainbow  阅读(1438)  评论(1编辑  收藏  举报
最近在CSDN上面看了《实现统计一个表的记录数,如果每天超过一定数量就发送邮件报警的作业脚本》帖子。但是上面好多的意见多是在SQL2000上面的。于是自己就开始了一下在SQL2005上面的实践。
1。首先要启用数据库邮件存储过程。具体操作如下:
  1. 在“开始”菜单上,依次指向“所有程序”、Microsoft SQL Server 2005、“”,然后单击“SQL Server 外围应用配置器”。

  2. 单击“功能的外围应用配置器”。

  3. 在 MSSQLSERVER 下,展开“数据库引擎”,然后单击“数据库邮件”。

  4. 确保选中“启用数据库邮件存储过程”,然后单击“应用”。

  5. 退出 SQL Server 外围应用配置器工具。

2。当启用数据库邮件存储过程成功以后。我们就要开始配置我们的数据库邮件配置文件了。具体操作如下:
使用对象资源管理器,连接到配置了数据库邮件的 SQL Server 数据库引擎 实例,展开“管理”,右键单击“数据库邮件”,然后单击“配置数据库邮件”。这个时候会打开数据库邮件配置向导。按自己的需要配置即可。但是这里一点要记住了自己的配置文件名。因为一会要在使用存储过程发送用到。很多人在这里多没有注意到用存储过程发送的时候就没有地方找了。

3。现在我们就可以开始测试一下邮件的发送了。
  1. 使用对象资源管理器,连接到配置了数据库邮件的 SQL Server 数据库引擎 实例,展开“管理”,右键单击“数据库邮件”,然后单击“发送测试电子邮件”。如果不存在数据库邮件配置文件,将通过一个对话框提示用户创建配置文件,同时还会打开数据库邮件配置向导。

  2. 在“从 <实例名> 发送测试电子邮件”对话框中,从“数据库邮件配置文件”框中选择要测试的配置文件。

  3. 在“收件人”框中,键入测试电子邮件收件人的电子邮件名称。

  4. 在“主题”框中,键入测试电子邮件的主题行。更改默认主题,以便更好地标识电子邮件以进行故障排除。

  5. 在“正文”框中,键入测试电子邮件的正文。更改默认主题,以便更好地标识电子邮件以进行故障排除。

  6. 单击“发送测试电子邮件”,将测试电子邮件发送到数据库邮件队列。

  7. 发送测试电子邮件将打开“数据库邮件测试电子邮件”对话框。请记下“发送电子邮件”框中显示的数字。这是测试电子邮件的 mailitem_id。单击“确定”。

OK,我们到这里已经可以发送邮件。但是多是手动的。比较的麻烦。下面我讲下用存储过程来发送。

实现实时(每隔一分钟检测一次,这个作业功能里可以设置)统计一个表的记录数,如果当天超过一定数量,(比如每天上限1W条符合条件的记录数)就发送邮件报警的作业脚本。我们先做一个这样的作业完成我们的自动发送工作。至于新建作业,我就不多说了。网上有好多这样的文章。

现在我们在作业脚本上面编写代码:
use vat   --自己的业务数据库
declare @cnt int
select  @cnt=count( *)  from  table where reqdate>CONVERT (char(10), getdate(), 120)  
if @cnt>10000    --发送条件。具体的业务逻辑自己可以处理。

begin
--以下是使用MSSQL2005的邮件数据库功能,按微软的提示是只有2005会有这个功能
use msdb
EXEC sp_send_dbmail  --调用SQL2005的邮件发送的存储过程。
@profile_name = 'test',  --就是在步骤2中的配置文件名。
--调用发送邮件的存储过程,登录帐号必须有msdb的datamail权限
@recipients = 'google@google.com',--用来接受邮件的地址
@subject = '邮件测试',
@body = '邮件测试成功!'
end

参考:
http://msdn2.microsoft.com/zh-cn/library/ms189505.aspx
http://msdn2.microsoft.com/zh-cn/library/ms188663.aspx