zoukankan      html  css  js  c++  java
  • SQLServer 存储过程+定时任务发邮件

    SQLServer 代理发邮件需要开启SQL Server 代理服务器,然后,在【管理】-【数据库邮件】中,右键点击配置数据库邮件。

     我用的是腾讯的企业邮箱,个人的163邮箱略微不同。下图是相关邮件的配置

    这是配置文件的配置。

    配置完成之后,就把下边语句写成存储过程,之后,再配置定时任务,定时执行该存储过程,发邮件。

    ALTER PROCEDURE [dbo].[LogErrorEmail]
     
    AS
    declare @emailcontent nvarchar(2000);--邮件内容
    declare @emailsubject nvarchar(200);--邮件主题
    declare @emailadress nvarchar(100);--邮件发送地址
    declare @error int;                   --错误数
    declare @logfield nvarchar(max);       --日志字段内容
    declare @num int;                  --数据行数     
     
         set @error=0;
         set @emailcontent='日期:'+convert(varchar(10),getdate(),120)+'<br>';
     
           --tt1_log表检查
         select  @num=COUNT(*)  from tt1_log where DATEDIFF(DD,t1_log.LOGDATE,getdate())<2
         if(@num=2)
             begin
               select @logfield=LOG_FIELD from  t1_log where DATEDIFF(DD,t1_log.LOGDATE,getdate())=0 --今天的数据
               if(@logfield like '%error%')
                   begin
                   set @emailcontent=@emailcontent+'t1_log今天有错;' ;
                   set @error=@error+1;
                   end 
               select @logfield=LOG_FIELD from  t1_log where DATEDIFF(DD,t1_log.LOGDATE,getdate())=1 --昨天的数据
               if(@logfield like '%error%')
                   begin
                   set @emailcontent=@emailcontent+'t1_log昨天有错;' ;
                   set @error=@error+1;
                   end
             end
         else
             begin
                set @emailcontent=@emailcontent+'t1_log表数据不足两条;';
                set @error=@error+1;
             end
    
    
         
    
        
    
        --t2_log表检查
         select  @num= COUNT(*)  from t2_log where DATEDIFF(DD,t2_log.LOGDATE,getdate())<2
         if(@num=2)
             begin
               select @logfield=LOG_FIELD from  t2_log where DATEDIFF(DD,t2_log.LOGDATE,getdate())=0 --今天的数据
               if(@logfield like '%error%')
                   begin
                   set @emailcontent=@emailcontent+'t2_log今天有错;' ;
                   set @error=@error+1;
                   end 
               select @logfield=LOG_FIELD from  t2_log where DATEDIFF(DD,t2_log.LOGDATE,getdate())=1 --昨天的数据
               if(@logfield like '%error%')
                   begin
                   set @emailcontent=@emailcontent+'t2_log昨天有错;' ;
                   set @error=@error+1;
                   end
             end
         else
             begin
                set @emailcontent=@emailcontent+'t2_log表数据不足两条;';
                set @error=@error+1;
             end
         
        if(@error>0)
            begin
                 exec msdb.dbo.sp_send_dbmail
                @profile_name ='LogErrorEmail',--配置文件名称
                @recipients='56789023@qq.com',--收件email地址
                @subject=@emailsubject,--邮件主题
                @body=@emailcontent,  --邮件正文内容
                @body_format='html'  --邮件内容格式
            end
     
     
     
  • 相关阅读:
    计算机科学导论第二周学习总结
    计算机科学概论2,3章小结
    2019—2020第一学期20202430王凯欣《网空概论》第四第五章学习小结
    2020—2021年第一学期20202430王凯欣《计算机科学概论》第一次笔记
    2020-2021第一学期20202410《计算机科学概论》第二次学习总结
    2020-2021第一学期20202410《计算机科学概论》第一次学习总结
    网页登录上网账号
    python从socket做个websocket的聊天室server
    windows下python 编码问题
    由css属性:vertial-align想到的。。
  • 原文地址:https://www.cnblogs.com/sdadx/p/8268606.html
Copyright © 2011-2022 走看看