专栏首页文渊之博利用数据库邮件服务实现监控和预警

利用数据库邮件服务实现监控和预警

背景

    现在越来越多的企业、公司要求对于数据库实现7*24小时的数据库监控,一般情况下采用的就是第三方的平台来实现邮件和手机短信的监测提醒。前几日公司新上了一台服务器,急于部署程序还没来得及搭建其他相关平台,为了更好的监控数据库,暂时用SQL Server自带的邮件服务来实现对数据库的监控和预警。下面简要介绍下配置的过程便于以后使用。

配置邮件

    整个部分的核心就是配置邮件服务,这部分需要一个邮件账户以及相应的邮件服务器。下面就以QQ的邮件为例进行说明。

1.设置邮件服务器

开启SMTP服务,点击开启,然后点击下方的生成授权码,获得授权码就是数据库发送邮件账号的密码。

2.配置数据库邮件

打开MSSM--》管理--》数据库邮件--》邮件配置数据库邮件—》如下选择

点击下一步后按照步骤123进行配置。

首先创建账户如下:

使用创建的账户作为配置账户

接下来需要选择安全公共配置,选中刚才配置的文件名,然后后面默认为配置文件

然后,可以修改“配置系统参数”,比如账户重试次数,禁止的附件文件扩展名,单击下一步,,默认配置即可:

都完成后会显示如下四个成功状态:

这样配置邮件服务就完成了可以右键“数据库邮件”点击测试邮件。也可以代码执行

--发送邮件

EXEC msdb.dbo.sp_send_dbmail 
    @profile_name = 'XXXX',         --配置文件名称
    @recipients = 'XXX@QQ.com',  --收件email地址
    @subject = '你好',                 --邮件主题
    @body = '…'            --邮件正文内容

执行完毕后可以通过错误日志下面的邮件日志来查看详细情况。

如果收到了邮件那么就可以进行下一步对于数据库的监控了,这里介绍两种一种是job的指定监控还有一种是警报监控。

job自定义语句监控

1.创建作业,核心就是在步骤中加入对指定数据的监测超过时触发通知。这里通过一个raiseerror 即可:

2.配置通知,当失败是发送电子邮件。

2.警报监控

何为警报:MS SQL SERVER自动将发生的事情记录在Windows的程序日志中。SQL SERVER AGENT会自动监视由SQL SERVER记录的程序执行日志,如果找到符合定义的Action发生,将拉响响应事件的警报。

警报的机制如图:

忘记哪里的图了

机制理解:

要创建不同级别的警报,就必须得将错误写到Windows时间日志中。这个不难理解。因为在警报概念部分我们已经说了,SQL SERVER代理是从事件日志上读取错误信息。当SQL SERVER代理读取了事件日志并在此发现了新错误时,就会搜索整个数据库来寻找相应的警报。一旦SQL SERVER代理发现了Match的警报,将立即激活该警报,从而通知相关人员或者根据Job的设定来做出相应的反应。

简要配置如下,主要有三种监控类型:事件警报/性能警报/WMI警报,这里就不一一介绍了举例一个说明

可以选择警报类型,针对数据库和严重性中选择监测内容比如权限不足,当发生权限不足时报警:

如下图所示,可以设定发生警报时向哪些操作员进行通知。点击新增操作员按钮,可以完成添加警报通知的操作员,选择电子邮件即可

如下图所示,可以设定警报错误发送的方式,可以选择[E-mail]、[Pager]、[Net send]复选框(可多选),

同时可以填写在发送警报的同时给出的通知消息,并能够对响应的间隔时间进行设定。

总结

   由于平时习惯了第三方平台的使用所以很少配置邮件服务,近日尝试一下以后发现如果服务器网络通畅或者内网服务完整,使用该服务还是很方便的,而且毕竟是微软自己的东西对于很多指标的监控也比较快捷到位。需要主要的是该功能对于权限的要求比较高,有时候需要调整用户权限等等才可以正常发送邮件。当没有第三方发送预警平台时可以考虑这种方式,是很不错的体验。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SqlServer服务器和数据库角色

    首先我们来阐述服务器(实例级别)的权限,实例级别和数据库级别权限的最大不同在于:实例级别的权限是直接授权给登录名,而数据库级别的全显示授予数据库用户的,然后数据...

    用户1217611
  • 小议隐式转换引起的问题

    隐式转换(Implicit conversion) ,这个情况每个程序员都或多或少的遇到过,这里我结合实际情况简单描述下常见的问题以及如何解决并阐述下原理。 所...

    用户1217611
  • 使用vs2010生成SQL Server 随机数据

    前几天做测试数据,偶然发现vs2010中有一个生成随机数据的功能,记录下来,方便以后使用,确实非常的好用灵活快捷。 为了简单扼要的说明,下面我用一个实例来说明如...

    用户1217611
  • 3小时搞定一个简单的MIS系统案例Northwind,有视频、有源代码下载、有真相

    一、瞎扯框架、架构      楼主自从1998年从C语言、MASM、Foxbase开始学计算机开始接触这个行当16年以来,2001年干第一份与程序、软件、然后是...

    魏琼东
  • Java JDBC简介

    JDBC技术就是Java Database Connectivity技术,也就是连接数据库的技术

    用户2965768
  • MySQL 8支持文档存储,并带来性能和安全方面的改进

    程序你好
  • 聊聊storm的OpaquePartitionedTridentSpoutExecutor

    本文主要研究一下storm的OpaquePartitionedTridentSpoutExecutor

    codecraft
  • MySQL 新手安装教程(windows版)

    通常情况下 Windows 系统经常使用 SQL Server 数据库,但由于 SQL Server 属于收费产品需要您自行授权,也可购买 数据库 CDB 实例...

    腾讯云数据库 TencentDB
  • 聊聊storm的OpaquePartitionedTridentSpoutExecutor

    本文主要研究一下storm的OpaquePartitionedTridentSpoutExecutor

    codecraft
  • 科普,想成为厉害的 Java 后端程序员,你需要懂这些

    站在运筹帷幄的角度来看,一名厉害的 Java 后端程序员都需要懂得哪些知识呢?我想,这也是很多读者迫切想知道的一个问题,因为如果不站在一个宏观的角度的话,所有学...

    沉默王二

扫码关注云+社区

领取腾讯云代金券