当前位置:   article > 正文

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

sqlserver查詢條件當作附件發送
一、准备知识 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语句)

  1. ALTER PROCEDURE [dbo].[selectAlarmInventory]
  2. AS
  3. Declare @ItemID varchar(20)
  4. Declare @LowestQuantity decimal(9,0)
  5. Declare @Quantity decimal(9,0)
  6. Declare Inventory_cursor cursor for Select ItemID,LowestQuantity,Quantity From T_inventory where LowestQuantity>Quantity
  7. Open Inventory_cursor
  8. Fetch NEXT From Inventory_cursor into @ItemID,@LowestQuantity,@Quantity
  9. While @@FETCH_STATUS=0
  10. BEGIN
  11. Insert into T_AlarmInventory values(@ItemID,@LowestQuantity,@Quantity)
  12. Fetch NEXT From Inventory_cursor into @ItemID,@LowestQuantity,@Quantity
  13. END
  14. Close Inventory_cursor
  15. Deallocate Inventory_cursor

              

               2、发送邮件的定时任务 发送邮件后将T_AlarmInventory中的记录删除

  1. Declare @count int
  2. Declare @result int
  3. Select @count=COUNT(*) from T_AlarmInventory
  4. IF @count>0
  5. BEGIN
  6. Exec @result=msdb.dbo.sp_send_dbmail
  7. @profile_name='XXXXXX',
  8. @recipients='XXXXXXX@sina.com',
  9. @subject='警报单',
  10. @query='select ItemID As ''物资编号'',Lowestquantity As ''最低库存'',Quantity As ''现有库存'' from T_AlarmInventory',
  11. @execute_query_database ='myDB',
  12. @attach_query_result_as_file = 1,
  13. @query_attachment_filename='警报信息.txt',
  14. @exclude_query_output =1
  15. Delete From T_AlarmInventory
  16. 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的邮箱就可以了),所以要有自己的思考,找出问题所在。尽信书,则不如无书~~~再次感谢网友们的无私奉献

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

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/728375
推荐阅读
相关标签
  

闽ICP备14008679号