SQLServer Job 邮件发送

SQLServer Job 邮件发送

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

邮件设置

  • 邮件服务器名称: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库中,具体操作如下表:

序号表名称
1sysmail_account
2sysmail_attachments
3sysmail_attachments_transfer
4sysmail_configuration
5sysmail_log
6sysmail_mailitems
7sysmail_principalprofile
8sysmail_profile
9sysmail_profileaccount
10sysmail_query_transfer
11sysmail_send_retries
12sysmail_server
13sysmail_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
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SQL Server 中,可以使用 SQL Server Agent 和 Database Mail 功能来发送电子邮件。下面是一个简单的步骤指南: 1. 配置 SQL Server Agent: - 打开 SQL Server Management Studio (SSMS),连接到 SQL Server 实例。 - 在“对象资源管理器”窗口中,展开“SQL Server代理”节点,右键单击“邮件”,选择“管理辅助任务”。 - 在“SQL Server代理任务向导”中,选择“添加辅助任务”。 - 在“辅助任务”页面上,选择“发送电子邮件”辅助任务,并点击“下一步”。 - 在“发送电子邮件”页面上,输入任务名称和描述,并点击“完成”。 2. 配置 Database Mail: - 在 SSMS 中,展开“管理”节点,右键单击“Database Mail”,选择“配置 Database Mail”。 - 在“Database Mail 配置向导”中,选择“启用 Database Mail”并点击“下一步”。 - 在“配置新配置文件”页面上,输入配置文件名称和描述,并点击“添加”。 - 在“编辑配置文件”页面上,输入 SMTP 服务器的名称、端口和发件人地址。点击“确定”。 - 在“配置新配置文件”页面上,选择刚刚创建的配置文件,并点击“下一步”。 - 在“配置新配置文件”页面上,选择“公共配置文件”,并点击“下一步”。 - 在“配置 Database Mail”页面上,点击“下一步”,然后点击“完成”。 3. 创建一个作业: - 在 SSMS 中,展开“SQL Server 代理”节点,展开“作业”节点,右键单击“新建作业”。 - 在“新建作业”对话框中,输入作业名称和描述。 - 在“步骤”页面上,点击“新建”。 - 在“新建步骤”对话框中,输入步骤名称、选择数据库和输入 T-SQL 脚本来执行发送邮件的操作。例如: ```sql EXEC msdb.dbo.sp_send_dbmail @profile_name = 'YourDatabaseMailProfile', @recipients = 'recipient@example.com', @subject = 'Test Email', @body = 'This is a test email from SQL Server.' ``` 替换 `YourDatabaseMailProfile` 为你在第二步中创建的配置文件名称。 - 点击“确定”。 - 在“调度”页面上,选择你想要执行作业的时间表。如果需要立即执行,可以点击“立即”。 - 点击“确定”。 现在,当作业按计划运行时,它将发送一封电子邮件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值