SQL Server 定时发送邮件(从数据库查询出的数据作为附件)

一、准备知识 1、配置数据库邮件功能(SQL Server 2008,貌似Express没有这个功能)

              如何配置参考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的邮箱就可以了),所以要有自己的思考,找出问题所在。尽信书,则不如无书~~~再次感谢网友们的无私奉献

         谨以此记录这两天的学习,欢迎大家交流~~

 

 

你可能感兴趣的:(sql,数据库,server,database,query,express,作业)