SQL Server 邮箱告警配置

目录

一、配置数据库邮件

1.手动启用数据库邮件功能

需执行以下脚本:

exec sp_configure 'show advanced options',1
RECONFIGURE
exec sp_configure 'Database Mail XPs',1
RECONFIGURE With Override

如下图所示:

在这里插入图片描述

2.配置数据库邮件

连接上数据库,Management →Database Mail → Configure Database Mail

在这里插入图片描述

弹出如下弹窗,点击 Next

在这里插入图片描述

在选择配置任务中,如果是新增选择【Set up Database Mail for the first time , select the setup option】,如果是修改,可选择【Manage Database Mail account and profiles】。

本例选择【Set up Database Mail for the first time , select the setup option】,先择后点击 Next

在这里插入图片描述

配置SMTP账户(如果已有SMTP账户,可在下方列表中看到;如果没有,点击添加按钮添加即可。)

在这里插入图片描述

新增数据库邮件账户
  a. 账户名:可根据实际情况新增
  b. 电子邮件地址:开通POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务的邮箱
  c. 显示名称:可根据实际情况新增
  d. 服务器名称:如果电子邮件地址是QQ邮箱,smtp.qq.com。
  e. 此服务器要求安全连接(SSL),打勾。
  f. 基本身份验证:用户名为电子邮箱地址;密码为授权码。

本例配置如下,配置完成后点击 OK

在这里插入图片描述

录入完成后,可看到 SMTP 账户列表

添加 Profile name(本例为 Monitor_Mail),完成后点击 Next

在这里插入图片描述

接下来需要选择安全公共配置,选中刚才配置的文件名,然后后面默认为配置文件,建议选【No】,可根据实际情况配置。

配置完成后点击 Next

在这里插入图片描述

在这里插入图片描述

默认配置文件选【No】后,可根据实际情况修改系统参数。

本例使用默认配置,点击 Next

在这里插入图片描述

配置完成,点击 Finish

在这里插入图片描述

点击 Close,关闭窗口。

在这里插入图片描述

3.测试数据库邮件

在数据库界面测试,如下图:

在这里插入图片描述

在收件人处输入收件人邮箱即可(可添加多个邮箱,邮箱地址之间用分号隔开)

添加完成后,点击 Send Test E-Mail

在这里插入图片描述

出现如下弹窗,因为已成功收到数据库测试邮件,故点击 OK

在这里插入图片描述

收到邮件如下:

在这里插入图片描述

二、实现JOB任务运行状态的检测

使用SQL Server时,很多情况下都需要自定义Job进行部分功能的实现,而大部分时间是采取凌晨或者非业务期进行工作。

因而Job的运行结果的检测便形成了一个需要跟踪的问题,比如有时候N个Job的运行,只有几个出现问题,并且不确定的此Job发生在那个机器上,所以自动化运维的重要性就不言而喻了。

对于上面问题的解决,SQL Server提供了很简单的配置便可以实现。

1 . 定义操作员

SQL Server Agent → Operators → New Operator

在这里插入图片描述

说明:
  a. 姓名:操作员的姓名,可以是别名。
  b. 电子邮件名称:邮箱的地址。
  c. 寻呼值班计划:可根据实际情况设置时间

配置完成后点击 OK

在这里插入图片描述

展开操作员列表,可看到操作员已添加成功

在这里插入图片描述

2. 新建死锁警报

接下来,我们设置死锁(Dead Lock)告警, 如下所示,当然也可以使用UI界面设置。

补充说明:配置前先查询当前警报等级信息:

select * from msdb.dbo.syscategories

查询结果如下

在这里插入图片描述

select * from msdb.dbo.sysalerts

查询结果如下

在这里插入图片描述

配置语句如下:

USE [msdb]
GO
 
IF NOT EXISTS(SELECT 1 FROM msdb.dbo.syscategories WHERE name='DBA_MONITORING' AND category_class=2)
BEGIN
 
EXEC msdb.dbo.sp_add_category
    @class=N'ALERT',
    @type=N'NONE',
    @name=N'DBA_MONITORING' ;
 
END
GO
 
IF EXISTS(SELECT 1 FROM msdb.dbo.sysalerts WHERE name='SQL Server Dead Lock Detected')
BEGIN
    EXEC msdb.dbo.sp_delete_alert @name=N'SQL Server Dead Lock Detected';
END
GO
 
 
IF NOT EXISTS(SELECT 1 FROM msdb.dbo.sysalerts WHERE name='SQL Server Dead Lock Detected')
BEGIN
EXEC msdb.dbo.sp_add_alert @name=N'SQL Server Dead Lock Detected', 
        @message_id=1205, 
        @severity=0, 
        @enabled=1, 
        @delay_between_responses=0, 
        @include_event_description_in=1, 
        @category_name=N'DBA_MONITORING', 
        @job_id=N'00000000-0000-0000-0000-000000000000'
END
GO
 
IF NOT EXISTS ( SELECT  *
                FROM    msdb.dbo.sysnotifications
                WHERE   alert_id = ( SELECT id
                                     FROM   msdb.dbo.sysalerts
                                     WHERE  name = 'SQL Server Dead Lock Detected'
                                   ) )
    BEGIN
 
        EXEC msdb.dbo.sp_add_notification @alert_name = N'SQL Server Dead Lock Detected',
            @operator_name = N'Manager', @notification_method = 1;
    END;
GO

如下图

在这里插入图片描述

成功执行后,刷新 Alert 列表

在这里插入图片描述

刷新后,展开 Alert 列表可看到新建的告警

在这里插入图片描述

3. 设置SQL Server代理

SQL Server Agent → Properties

在这里插入图片描述

说明:
  a. 选择是否启用配置文件,邮件系统选择了数据库邮件,邮件配置文件可选择具体的配置。
  b. 启用防故障操作员

配置 Alert System 选项页,配置完成后点击 OK

在这里插入图片描述

补充:其他选项页均保留默认设置,截图如下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三、创建 Profile 及映射

1.添加 Profile

exec msdb..sysmail_add_profile_sp
@profile_name = 'dba_profile'-- profile 名称
,@description  = 'dba mail profile'-- profile 描述
,@profile_id   = null

如图

在这里插入图片描述
2.映射 Account 和 Profile

exec msdb..sysmail_add_profileaccount_sp  
@profile_name    = 'dba_profile'-- profile 名称
,@account_name    = 'Monitor'-- account 名称
,@sequence_number = 1-- account 在profile中顺序

如图

在这里插入图片描述

四、配置 Job 发送 Database Log Space 邮件

1.新建Job

SQL Server Agent → Job → New Job

在这里插入图片描述

General 选项页配置如下

在这里插入图片描述

配置 Step 选项页,点击 New

在这里插入图片描述

New Job Step 配置如下图

其中代码段为:

EXEC sp_send_dbmail
    @profile_name = 'dba_profile',
    @recipients = '[email protected]', //实际配置时需将 [email protected] 更换成实际邮箱地址
    @subject = 'Data Log Space',@query='dbcc sqlperf(logspace)'

在这里插入图片描述

此时会返回到如下界面

在这里插入图片描述

配置 Scheduler 选项页,点击 New

在这里插入图片描述

根据实际需求配置完成后,点击 OK

本例配置的是 每天每 2h 发一次邮件

在这里插入图片描述

点击 OK ,完成配置

在这里插入图片描述

展开 Job 列表,可看到新建的 Job

在这里插入图片描述

2.测试 Job

SQL Server Agent →Jobs → Database Log Space → Start Job at Step

在这里插入图片描述

执行成功,点击 OK 关闭窗口

在这里插入图片描述

在这里插入图片描述

经测试 Job 成功发送想要的信息 。