最近在CSDN上面看了《实现统计一个表的记录数,如果每天超过一定数量就发送邮件报警的作业脚本》帖子。但是上面好多的意见多是在SQL2000上面的。于是自己就开始了一下在SQL2005上面的实践。
1。首先要启用数据库邮件存储过程。具体操作如下:
-
在“开始”菜单上,依次指向“所有程序”、Microsoft SQL Server 2005、“”,然后单击“SQL Server 外围应用配置器”。
-
单击“功能的外围应用配置器”。
-
在 MSSQLSERVER 下,展开“数据库引擎”,然后单击“数据库邮件”。
-
确保选中“启用数据库邮件存储过程”,然后单击“应用”。
-
退出 SQL Server 外围应用配置器工具。
使用对象资源管理器,连接到配置了数据库邮件的 SQL Server 数据库引擎 实例,展开“管理”,右键单击“数据库邮件”,然后单击“配置数据库邮件”。这个时候会打开数据库邮件配置向导。按自己的需要配置即可。但是这里一点要记住了自己的配置文件名。因为一会要在使用存储过程发送用到。很多人在这里多没有注意到用存储过程发送的时候就没有地方找了。
3。现在我们就可以开始测试一下邮件的发送了。
-
使用对象资源管理器,连接到配置了数据库邮件的 SQL Server 数据库引擎 实例,展开“管理”,右键单击“数据库邮件”,然后单击“发送测试电子邮件”。如果不存在数据库邮件配置文件,将通过一个对话框提示用户创建配置文件,同时还会打开数据库邮件配置向导。
-
在“从 <实例名> 发送测试电子邮件”对话框中,从“数据库邮件配置文件”框中选择要测试的配置文件。
-
在“收件人”框中,键入测试电子邮件收件人的电子邮件名称。
-
在“主题”框中,键入测试电子邮件的主题行。更改默认主题,以便更好地标识电子邮件以进行故障排除。
-
在“正文”框中,键入测试电子邮件的正文。更改默认主题,以便更好地标识电子邮件以进行故障排除。
-
单击“发送测试电子邮件”,将测试电子邮件发送到数据库邮件队列。
-
发送测试电子邮件将打开“数据库邮件测试电子邮件”对话框。请记下“发送电子邮件”框中显示的数字。这是测试电子邮件的 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