分享

SQLServer Job 邮件发送

 os2jkyaa51x2ib 2018-07-06

为了方便查看定时任务执行是否成功,同时能够及时发现存储过程中抛出的异常,采用发送邮件的方式来提醒这些问题。

邮件设置

  • 邮件服务器名称:smtp.qq.com
  • 端口号:587
  • 开启POP3/SMTP服务,产生第三方客户端授权码

说明

邮件采用QQ邮件,由于QQ邮件服务器要求安全链接(SSL),因此采用587端口,而不是25。具体设置如下:

步骤

1.进入QQ邮箱,找到设置>账户>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
这里写图片描述
2.开启POP3/SMTP服务,点击“生成授权码”,这会让发送短信验证
这里写图片描述
3.保存生成的授权码,这是在第三方软件上用的密码

SQLServer数据库配置

  • 数据库邮件配置
  • SQLServer代理 警报系统配置
  • 操作员配置
  • Job配置

说明

通过图形界面配置邮件信息,其实通过数据库提供的存储过程配置是一样的,邮件所用到表在msdb库中,具体操作如下表:

序号 表名称
1 sysmail_account
2 sysmail_attachments
3 sysmail_attachments_transfer
4 sysmail_configuration
5 sysmail_log
6 sysmail_mailitems
7 sysmail_principalprofile
8 sysmail_profile
9 sysmail_profileaccount
10 sysmail_query_transfer
11 sysmail_send_retries
12 sysmail_server
13 sysmail_servertype

步骤

一、数据库邮件配置
1.管理>数据库邮件>邮件配置数据库邮件
这里写图片描述
2.进入配置向导,点击下一步
这里写图片描述
如果为第一次配置,就选择第一选项就行,在点击下一步时,会提示邮件没有开启,点击确定开启。
这里写图片描述
3.建立配置配件
配置文件可以建立多个,需要配置每个配置文件名,可以对配置文件进行说明,点击添加,添加SMTP账户
这里写图片描述
这里写图片描述
4.SMTP邮件账户配置完,点击确定
这里写图片描述
点击下一步,进入到安全性配置,将公共复选框勾住,作为默认配置
这里写图片描述
点击下一步
这里写图片描述
5.配置完成
这里写图片描述

二、SQLServer代理 警报系统配置
1.开启服务代理
2.SQLServer代理,右键属性>警报系统>邮件会话>启用邮件配置文件,选择邮件系统:数据库邮件,邮件配置文件:JobMonitorProfile(刚刚配置的)
这里写图片描述
3.点击确定
4.重启服务代理(一定要重启)

三、操作员配置
1.开启服务代理
2.SQLServer代理>操作员>右键新建操作员>常规
这里写图片描述

Job配置
1.开启服务代理
2.SQLServer代理>作业>右键新建作业>通知,勾选电子邮件,选择操作员,选择作业完成、失败、还是成功发送邮件
这里写图片描述

SQLServer 邮件代码

下面为发送邮件的SQL,存储过程异常数据通过begin try……end try begin catch……end catch 存储到T_SYS_ExceptionLog表中,然后通过定时检索,如果有异常就发送邮件,代码如下

create procedure [dbo].[proc_Sys_ExceptionSendEmail]
as
/********************************
--function:异常数据发送邮件
--author:zhujt
--create date:2016-12-2 10:25:41
*********************************/
begin
    declare 
        @profileName varchar(100),
        @Html varchar(max);

    set @Html='<table style="border:1px solid;"><tr><th>日志操作类型</th><th>日志标题</th><th>日志内容</th><th>文件路径</th><th>创建时间</th></tr>'+
    (select 
           'tds'+case ExceptionType 
              when 1 then '数据定时生成' 
              when 2 then '数据操作' 
           end +'tde', 
           'tds'+ExceptionTitle+'tde',
           'tds'+ExceptionMessage+'tde',
           'tds'+Module+'tde',
           'tds'+CONVERT(varchar(23),CreateDate,120)+'tde'
      from T_SYS_ExceptionLog
     where CreateDate>=CONVERT(varchar(10),DATEADD(DAY,-1,GETDATE()),120)+' 00:00:00'
    FOR XML PATH('tr'), ELEMENTS
    )
    +'</table>';

    select @profileName=name 
      from msdb.dbo.sysmail_profile x
     where exists(select 1 
                    from msdb.dbo.sysmail_principalprofile 
                   where profile_id=x.profile_id 
                     and is_default=0
                  );
    if @profileName is not null and LEN(@profileName)>0 and @Html is not null and LEN(@Html)>0
        begin     
            set @Html=REPLACE(REPLACE(@Html,'tds','<td>'),'tde','</td>');
            set @Html='<style>table{border-right:1px solid;border-bottom:1px solid;}td,th{border-left:1px solid;border-top:1px solid;}</style>'+@Html;

            exec msdb.dbo.sp_send_dbmail 
                @profile_name = @profileName,  
                @recipients = 'JobEmail@qq.com',
                @subject = 'JobEmail', 
                @body = @Html,
                @body_format = 'HTML';
        end
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多