如何利用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]复选框(可多选),同时可以填写在发送警报的同时给出的通知消息,并能够对响应的间隔时间进行设定。
总结
由于平时习惯了第三方平台的使用所以很少配置邮件服务,近日尝试一下以后发现如果服务器网络通畅或者内网服务完整,使用该服务还是很方便的,而且毕竟是微软自己的东西对于很多指标的监控也比较快捷到位。需要主要的是该功能对于权限的要求比较高,有时候需要调整用户权限等等才可以正常发送邮件。当没有第三方发送预警平台时可以考虑这种方式,是很不错的体验。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持路饭。
本文地址:http://www.45fan.com/a/question/84204.html