RDS SQL Server基于Database Mail配置作业失败告警

更新时间:
复制 MD 格式

本文介绍如何基于Database Mail功能配置作业失败告警,实现作业执行失败时自动发送邮件通知,帮助您及时发现并处理异常。

适用范围

准备工作

配置公网NAT网关

  1. 创建NAT网关

    1. 登录NAT网关管理控制台,单击创建公网NAT网关

      说明

      首次使用NAT网关时,需要在公网 NAT 网关页面关联角色创建区域,单击创建关联角色,角色创建成功后即可创建NAT网关。

    2. 配置以下核心参数,并单击立即购买

      • 地域网络及可用区:需要与RDS SQL Server实例保持一致。

      • 网络类型:选择公网NET网关

      • 弹性公网IP:选择稍后配置

    3. 确认订单页面确认公网NAT网关的配置信息后,单击立即开通

  2. 绑定公网IP

    1. NAT网关管理控制台页面,找到新建的公网NAT网关实例,单击实例ID,进入基本信息页。

    2. 切换至绑定的弹性公网IP页签,单击绑定弹性公网IP

    3. 绑定弹性公网IP弹窗中,选择新购弹性公网IP并绑定,单击确定

  3. 创建SNAT条目

    1. NAT网关管理控制台页面,找到新建的公网NAT网关实例,单击实例ID,进入基本信息页。

    2. 切换至SNAT管理页签,单击创建SNAT条目

    3. 创建SNAT条目页面,配置以下参数,然后单击确定创建

      • SNAT条目粒度:选择交换机粒度

      • 选择交换机:选择RDS SQL Server实例所在的交换机。

      • 选择弹性公网IP地址:选择第二步中配置的公网IP。

获取目标邮箱授权码

  1. 登录目标邮箱(本文以QQ邮箱为例),依次进入设置 > 账号与安全 > 安全设置页面。

  2. 开启POP3/IMAP/SMTP/Exchange/CardDAV服务,并生成授权码。

配置邮件告警

通过SSMS管理界面配置

为方便您快速搭建邮件告警流程,以下仅介绍核心步骤配置,详细内容请参考SSMS官网文档

  1. 配置Database Mail

    1. 进入SSMS管理界面,选择待配置的数据库实例,进入Management节点,右键单击Database Mail,选择Configure Database Mail。

    2. 选择Set up Database Mail by performing the following tasks,并单击Next进入New Profile页面。

    3. Profile name处输入配置文件名称,在SMTP accounts处,依次单击Add > New Account新建一个SMTP账号用于向SMTP 服务器发送电子邮件。

    4. 在新建账号页面,配置以下核心参数,并单击OK

      1. Account name:填入新的账号名称。

      2. Email address:填入目标邮箱地址。

      3. Server namePort number:以QQ邮箱为例,分别填入smtp.qq.com587,同时勾选This server requires a secure connection (SSL)以启用SSL安全加密不同邮件服务商支持的端口与SSL加密可能不同,以目标邮件服务商提供的信息为准。

      4. SMTP Authentication:配置SMTP身份验证,选择Basic Authentication,在User name填入目标邮箱地址,在Password填入邮箱授权码。

    5. 如您无特殊需求,以下步骤可以直接点击Next使用默认配置直至配置完成:

      1. Manage profile security:设置Profile文件的属性为Public(允许任何有权访问数据库的用户或角色发送邮件)或Private(仅特定用户或角色可发送邮件),并设置文件是否为默认(Default Profile)。

      2. Configure System Parameters:设置重试次数、重试延迟、最大文件大小、禁止使用的附件文件扩展名、日志级别等系统参数。

      3. 核对账号配置,单击Finish完成。

    6. 测试邮件发送:

      1. 右键单击Management > Database Mail,选择Send Test E-Mail

      2. 选择上一步新创建的Profile,并填入目标邮箱地址。

  2. 配置SQLAgent

    1. 配置Operator:

      1. 右键单击SQL Server Agent > Operator,选择New Operator

      2. 填入自定义的Operator名称与目标邮箱地址,单击OK

    2. 配置Jobs:

      1. 查看SQL Server Agent > Jobs属性,进入Notifications页面。

      2. 勾选E-mail,选择上一步中新建的Operator,并选择当任务进入何种状态时告警。本文以任务工作失败告警为例,选择When the job fails

通过脚本配置邮件告警

QQ邮箱为例,可以通过以下脚本配置邮件告警:

  • 首次配置邮箱告警

    EXECUTE msdb.dbo.sysmail_add_account_sp
        @account_name = 'QQMailAccount',  -- 账户名称(自定义)
        @email_address = '@qq.com',  -- 目标邮箱(QQ邮箱)地址
        @display_name = 'SQL Server通知',  -- 显示名称(自定义)
        @replyto_address = '@qq.com',  -- 回复邮箱(可以与目标邮箱一致)
        @mailserver_name = 'smtp.qq.com',
        @mailserver_type = 'SMTP',
        @port = 587,
        @username = '@qq.com',  -- 目标邮箱(QQ邮箱)地址
        @password = '你的16位授权码',  -- 替换成实际的授权码
        @use_default_credentials = 0,
        @enable_ssl = 1;
    GO
  • 更新邮箱与测试邮件

    -- 查看并获取account name,然后贴到下面的account_name变量中
    SELECT 
        a.account_id,
        a.name AS account_name,
        a.email_address,
        s.servertype,
        s.servername AS smtp_server,
        s.port,
        s.username,
        s.use_default_credentials,
        s.enable_ssl
    FROM msdb.dbo.sysmail_account a
    INNER JOIN msdb.dbo.sysmail_server s ON a.account_id = s.account_id;
    
    
    -- 更新邮件配置,填入待更新的邮件地址等参数
    EXECUTE msdb.dbo.sysmail_update_account_sp
        @account_name = 'tttt',  -- 上一步中获取的account name
        @email_address = '123@qq.com',
        @display_name = '显示名称',
        @replyto_address = '123@qq.com',
        @mailserver_name = 'smtp.qq.com',
        @mailserver_type = 'SMTP',
        @port = 465,  
        @username = '123@qq.com',
        @password = '16位授权码',  
        @use_default_credentials = 0,
        @enable_ssl = 1; 
    
    --获取Profile的名称,填到下面发送测试邮件的脚本中
    SELECT * FROM msdb.dbo.sysmail_profile;
    
    --发送测试邮件
    EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'test',  -- 上一步中获取的Profile名称
    @recipients = 'xxx@xxx.com',
    @subject = '测试邮件',
    @body = '这是测试邮件内容3';