如何配置参考http://blog.csdn.net/ghj1976/article/details/3936286
2、使用SQL Server Agent 设置作业定时任务(貌似Express也没有这个功能)
如何设置作业参考http://www.soaspx.com/dotnet/sql/mssql/sql2005/sqlservr2005_20120308_8721.html
二、功能及数据库表说明
功能说明:在每天的固定时间检查数据库表T_Inventory,如果发现LowestQuantity的值大于Quantity 就将该表中满足该条件的记录以邮件的形式给用户
T_AlarmInventory 记录满足条件要发送的数据 (两张表一样)
T_Inventory T_AlarmInventory
建一个作业,作业中包括两个步骤
1、一个是将T_Inventory满足条件的数据复制到T_AlarmInventory中,用一个存储过程实现,在该步骤调用(也可以直接在创建的步骤里面写SQL语句)
ALTER PROCEDURE [dbo].[selectAlarmInventory] AS Declare @ItemID varchar(20) Declare @LowestQuantity decimal(9,0) Declare @Quantity decimal(9,0) Declare Inventory_cursor cursor for Select ItemID,LowestQuantity,Quantity From T_inventory where LowestQuantity>Quantity Open Inventory_cursor Fetch NEXT From Inventory_cursor into @ItemID,@LowestQuantity,@Quantity While @@FETCH_STATUS=0 BEGIN Insert into T_AlarmInventory values(@ItemID,@LowestQuantity,@Quantity) Fetch NEXT From Inventory_cursor into @ItemID,@LowestQuantity,@Quantity END Close Inventory_cursor Deallocate Inventory_cursor
2、发送邮件的定时任务 发送邮件后将T_AlarmInventory中的记录删除
Declare @count int Declare @result int Select @count=COUNT(*) from T_AlarmInventory IF @count>0 BEGIN Exec @result=msdb.dbo.sp_send_dbmail @profile_name='XXXXXX', @recipients='[email protected]', @subject='警报单', @query='select ItemID As ''物资编号'',Lowestquantity As ''最低库存'',Quantity As ''现有库存'' from T_AlarmInventory', @execute_query_database ='myDB', @attach_query_result_as_file = 1, @query_attachment_filename='警报信息.txt', @exclude_query_output =1 Delete From T_AlarmInventory END
该处发送邮件使用了系统存储过程msdb.dbo.sp_send_dbmail,将查询到的数据已邮件的形式发送出去
详细说明可以参考SQL Server 2008的本地联机帮助
ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.zh-CHS/s10de_6tsql/html/f1d7a795-a3fd-4043-ac4b-c781e76dab47.htm
上述两个步骤建好就可以启用SQL Server Agent了
三、总结
这两天就整了个这么个东西,网上有不少的资料,得到了不少的帮助。当然虽然有很多资料很多帮助,但还是会碰到很多的问题,有时根据网上的资料一步步做但还是出现错误或者没有反应(比如在配置数据库邮件时,按照说明在新浪申请了账号作为发件的服务器,但就是发送不了,后来改用163的邮箱就可以了),所以要有自己的思考,找出问题所在。尽信书,则不如无书~~~再次感谢网友们的无私奉献
谨以此记录这两天的学习,欢迎大家交流~~