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

背景

现在越来越多的企业、公司要求对于数据库实现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.警报监控[code]何为警报: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)

相关推荐

  • myeclipse中连接mysql数据库示例代码

    1. 环境配置 下载地址:http://www.mysql.com/downloads/mysql/ 真麻烦,下载的话还需要注册和登录以及填个表.上面的信息还挺全的,乱填的信息也是可以接受的~~ 下载后按提示安装即可,最后设置登录mysql用的密码.安装完成后,测试连接数据库.在开始-程序中点击MYSQL5.5 Command Line cilent,输入刚才设定的密码后,应该后就能连上mysql服务器了. 在安装后的软件包中,mysql_server\Connector J XXXX中可以找到

  • 查找oracle数据库表中是否存在系统关键字的方法

    今天在工程中遇到"ORA-01747: user.table.column, table.column 或列说明无效"的报错情况,查了一下是由于数据库列名起的不好引起的,名字用到了数据库的关键字. select * from v$reserved_words where keyword in( select COLUMN_NAME from all_tab_columns where table_name = '表名大写' and owner='用户名大写' ); ID可以忽略

  • python爬取NUS-WIDE数据库图片

    实验室需要NUS-WIDE数据库中的原图,数据集的地址为http://lms.comp.nus.edu.sg/research/NUS-WIDE.htm   由于这个数据只给了每个图片的URL,所以需要一个小爬虫程序来爬取这些图片.在图片的下载过程中建议使用VPN.由于一些URL已经失效,所以会下载一些无效的图片. # PYTHON 2.7 Ubuntu 14.04 nuswide = "$NUS-WIDE-urls_ROOT" #the location of your nus-wi

  • Linux 自动备份oracle数据库详解

    Linux 自动备份oracle数据: 曾经有个同事,来回操作开发和生产的数据库,结果误删了生产的数据库,那种心情我想不是一般人能理解的,虽然说oracle可以有方法还原,但并不是彻底的. 所以,在工作中,不管是开发还是维护,备份数据库是非常有必要. 简单实用的晚间自动备份数据库小案例 步骤一.创建备份脚本,暂且命名为orabak.sh #路径名,指定备份的路径 FILEPATH = /oracle/orabak #根据指定日期格式,定义备份数据库文件名 FILENAME = `date + %

  • 记一次mariadb数据库无法连接

    自从自己维护blog以后,基本一个月内,都会出现1,2次这种错误,以前解决的办法很简单,就是把虚拟机重启一下就可以.经常是网友在微信,qq,微博提醒我blog挂掉. 刚好国庆期间碰上,就顺便提高一下自己的运维能力,看看具体的原因. tail /var/log/mariadb/mariadb.log 看到大概的错误 161004 11:21:05 InnoDB: Fatal error: cannot allocate memory for the buffer pool 161004 11:21

  • 数据库 关键字一览表

    数据库 关键字: 为了避免在数据库表结构设计过程中使用系统保留关键字我们必须知道数据库存在哪些关键字,接下来会列出mysql.oracle.sqlserver三个数据库各自的保留关键字. Mysql http://dev.mysql.com/doc/refman/5.7/en/keywords.html ACCESSIBLE (R) ACCOUNT[a] ACTION ADD (R) AFTER AGAINST AGGREGATE ALGORITHM ALL (R) ALTER (R) ALWA

  • 数据库删除完全重复和部分关键字段重复的记录

    1.第一种重复很容易解决,不同数据库环境下方法相似: 以下为引用的内容: Mysql create table tmp select distinct * from tableName; drop table tableName; create table tableName select * from tmp; drop table tmp; SQL Server select distinct * into #Tmp from tableName; drop table tableName;

  • MyEclipse连接MySQL数据库图文教程

    自己在自学JavaEE课程时,在做一些小东西的时候,需要连接MySQL数据库,自己看了看书,然后自己摸索,一步步成功,学习也是一个分享的过程,图文结合,希望帮助到更多的人. 一.配置Database Explorer1. 打开MyEclipse Database. 方法:Window-->Openperspective-->MyEclipse Database Explorer 2.点击右上角的MyEclipse...在DB Browser空白处单击右键-->new 打开DataBase

  • Access数据库中“所有记录中均未找到搜索关键字”的解决方法

    先使用 Ms Access 压缩修复,然后再去相关的表把备注类型的字段里的"索引"去掉 备注型字段为什么不能超过1950字节?是由于备注型字段是有"索引".用Access对数据库的表进行设计时,点试设计视图->索引, 可以看到这个字段有索引.就是这个原因,删掉这个索引就什么事都没有了. 奇怪的是:在ACCESS设计表时,在备注型的字段里,根本就没有选项对备注型字段加上索引功能. 本文来源于 KinJAVA日志 (http://jorkin.reallydo.c

  • Myeclipse连接mysql数据库心得体会

    我是给同学做一个J2EE 关于struct+hibernate结构的课设,数据库以前用的是Oracle,数据库丢失,不想装Oracle,那玩意装在本子上太刀了,卸不掉恶心...就换个mysql给他改改,网上的一些帖子,太老了,版本以及网址都是翻新没有翻内容,头大,不给力啊,还是不能全靠网络,毕竟有些东西要相信自己--想到了自己试试.思考才是王道. 以上都是废话.开始: Myeclipse连接mysql数据库之前先搞定这几项: 步骤: 1. Install JDK,Tomcat,myeclipse

随机推荐