SQLServer 存储过程+定时任务发邮件

摘要:
需要启用SQL Server代理才能发送邮件。然后,在-中,右键单击“配置数据库邮件”。我使用腾讯的公司邮箱,我的个人163邮箱略有不同。下图显示了相关消息的配置。这是配置文件的配置。配置完成后,将以下语句写入存储过程,然后配置计划任务以定期执行存储过程并发送电子邮件。

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

SQLServer 存储过程+定时任务发邮件第1张

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

SQLServer 存储过程+定时任务发邮件第2张

SQLServer 存储过程+定时任务发邮件第3张

这是配置文件的配置。

SQLServer 存储过程+定时任务发邮件第4张

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

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
 
 
 

免责声明:文章转载自《SQLServer 存储过程+定时任务发邮件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Git 如何合并其他 Remote 上面的更新使用openCV打开USB摄像头(UVC 小米micro接口)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQLServer 命令批量删除数据库中指定表(游标循环删除)

DECLARE @tablename VARCHAR(30),@sql VARCHAR(500)DECLARE cur_delete_table CURSOR READ_ONLY FORWARD_ONLY FORSELECT name FROM sysobjects WHERE name LIKE 'PUB%' AND type='U'OPEN cur_d...

SQL Server 存储过程 数组参数 (How to pass an array into a SQL Server stored procedure)

Resource from StackOverflow 使用存储过程,如何传递数组参数? 1.分割解析字符串,太麻烦 2.添加Sql Server 自定义类型 **sp_addtype** 问题需求:需要向SP 传递数组类型的参数 select * from Users where ID IN (1,2,3 ) Sql Server 数据类型 并没...

log4j 设置日志输出文件的路径

log4j.rootLogger=debug, A1 #输出到指定目录下 og4j.appender.A1.File=/log.log #输出到tomcat容器下的指定目录 log4j.appender.R.File=${catalina.home}/logs/log.log #读取 web.xml 配置文件中的值一般设置为 webApp lo...

sqlServer 查询特定的表(字段或者文字)在哪些存储过程中被使用

--查询特定的表(字段或者文字)在哪些存储过程中被使用SELECT DISTINCT OBJECT_NAME(id)--,text FROMsyscomments WHERE id IN ( SELECTid FROMsysobjects WHERE type IN (...

python smtp 群发邮件

最近工作中遇到使用脚本处理问题并发送结果邮件,使用python的smtp模块很简单的完成了实现。今天遇到一个问题,根据脚本的测试结果需要群发邮件,但是发送邮件的py文件只有首个地址收到了邮件。仔细排查发现个有意思的地方: 发送邮件的py大致如下: 1 def sendmail(message,to_addrs) 2 ................

Python log() 函数

描述 log() 方法返回x的自然对数,x > 0。 语法 以下是 log() 方法的语法: import math math.log( x ) 注意:log()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。 参数 x -- 数值表达式。 返回值 返回x的自然对数,x>0。 实例 以下展示了使用 log()...