sql server 警笛管理,实时监听数据库动向,运筹帷幄之中

sql server 警报管理,实时监听数据库动向,运筹帷幄之中

工作这么多年了,无论是身边的同学还是同事,发现只要搞程序员的都有一个通病---懒。懒到谁都不愿意加班,尤其是"义务"加班。即使大家都不愿意加班,但是很多时候项目赶着上线或者上线之后出错啊什么的,总得有人看着,这时候就诞生了一种新的工作制度,叫做7*24。顾名思义就是这种岗位实时都得有人看着,这确实是一件让人头疼的事情。虽然说在项目刚上线不可避免的得有7*24,但是我们可以尽量减少7*24的工作量(ps:因为7*24确实太累太苦,别问我怎么知道的)。那么我们怎么减少7*24的工作量呢?这就是我们这篇博文需要介绍到的,Sql server之警报管理。

sql server 警笛管理,实时监听数据库动向,运筹帷幄之中
v写在前面

本博文中部分内容根据《Microsoft sql server》翻译再加上自己的理解而来。

v警报概念

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

  • SQL SERVER事件
  • 服务器/数据库性能条件
  • Windows management instrument事件(下文中简称:WMI)

警报对应上述3种事件,当事件发生时,将自动触发对应的事件。警报由名称、触发警报的时间或者性能条件、SQL SERVER代理响应事件或者性能条件所执行的操作这3个部分来完成。一个基本的警报包含以下内容:

错误号

SQL SERVER中大约有3000个可能出现的错误(SQL SERVER常见错误),每个错误都有自己的编号。在很多情况下程序开发可能产生不可预知的错误,在这些情况下,我们就需要New自定义错误号,并且针对这个事件产生一个警报

错误级别

程序里面,任何错误都是有Priority的,SQL SERVER中的每一个错误都有一个关联的严重级别,通过这个级别可以指示错误的挺严重性,可以按照不同的级别产生不同的警报。(这个道理很好懂的,拿原子弹炸老鼠(小题大做)的事情咱不干)

性能计数器

数据库用户可以从性能计数器中产生的相对应的警报,这些计数器对于用户数据库的各种性能具有良好的效果。

v警报机制
sql server 警笛管理,实时监听数据库动向,运筹帷幄之中
v创建警报

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

下面我们就依次创建事件警报/性能警报/WMI警报

创建事件警报

①  打开Sql Server Management Studio窗口,找到警报节点,如图

sql server 警笛管理,实时监听数据库动向,运筹帷幄之中

②  点击New Alert(创建警报)

sql server 警笛管理,实时监听数据库动向,运筹帷幄之中

注意:在窗口中可以对警报的基本属性进行设置。例如:在[Name]文本框中可以对警报的名称进行设置,从[Type]下拉列表框中可以对警报的类型进行设置,图中选择的Sql Server事件警报选项。在[Database Name]下拉框中可以选择执行警报的数据库(默认是所有数据库),同时可以使用[Error Number]可以指定警报对应的错误号,使用[Severity]可以选择预定义的警报。如果选择的严重级别在19~25之间,就会向Windows应用程序日志发送Sql server消息,并触发警报。

③  选择[Response]标签页,如下图所示,可以设定发生警报时向哪些操作员进行通知。单机[New Operator]按钮,可以完成添加警报通知的操作员

sql server 警笛管理,实时监听数据库动向,运筹帷幄之中

④  选择[Options]标签页,如下图所示,可以设定警报错误发送的方式,可以选择[E-mail]、[Pager]、[Net send]复选框(可多选),同时可以填写在发送警报的同时给出的通知消息,并能够对响应的间隔时间进行设定。

sql server 警笛管理,实时监听数据库动向,运筹帷幄之中

⑤  完成属性设置后,单机[OK]按钮完成警报的创建工作

创建性能警报

sql server 警笛管理,实时监听数据库动向,运筹帷幄之中

在性能警报创建页面,可以完成以下设置:

  • 在[Object]下拉框中可以设置性能警报针对的对象,like: 选择[Sql Server Database]选项设定性能警报针对的数据库
  • 通过[Counter]下拉框设置性能计数器的计数方式
  • 通过[Instance]下拉框设置性能计数器针对的数据库实例
  • 通过[Alert if counter]下拉框设置性能计数器触发的条件

接下来,就如同创建事件警报的步骤一样,设置[Response]标签页和[Options]标签页,完成设置后,单机[OK]按钮完成警报的创建工作

创建WMI警报

WMI警报帮助用户对本地和远程计算机进行管理。WMI通过编程和脚本语言为日常管理提供了一条连续一致的途径,用户通过WMI警报可以完成以下任务:

  • 在[Object]下拉框中可以设置性能警报针对的对象,like: 选择[Sql Server Database]选项设定性能警报针对的数据库
  • 远程启动计算机或在远程计算机上启动一个进程
  • 设定在特定日期和时间运行的进程
  • 获得本地或远程计算机已安装的程序列表
  • 查询本地或远程计算机的Windsows事件日志

WMI警报的创建和事件警报/性能警报创建类似,在[New Alert]窗口的[Type]下拉列表中选择[WMI event alert]选项,如下图所示

使用[Namespace]文本框的默认值\\.\root\Microsoft\SqlServer\ServerEvents\MSSQLSERVER,在[Query]文本框中输入如下语句:

SELECT * FROM
DDL_DATABASE_LEVEL_EVENT 
WHERE Database='Test'

 

sql server 警笛管理,实时监听数据库动向,运筹帷幄之中

v博客总结

到此,Sql Server警报管理就介绍完毕了。

在此,借助博客园这个平台,向那些奋斗在7*24的前线程序猿们献上最崇高的敬意。

 


作  者:请叫我头头哥
出  处:http://www.cnblogs.com/toutou/
关于作者:专注于微软平台的项目开发。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是作者坚持原创和持续写作的最大动力!

15楼顾家
必须站出来支持一下。
14楼yyyaaaa
mark
13楼ChuckLu
再吐槽下,我提交成功的时候,显示的评论背景色是黄色的。,刷新一下之后,字体的背景色变成绿色了。,,之前的黄色背景色,很不好看
12楼ChuckLu
还没有解决字体大小的问题呀,之前给你反馈过的,,字体实在太小了
Re: 请叫我头头哥
@ChuckLu,多谢你的关注- -,你的是什么浏览器啊?, 我这字体是正常的啊= =
11楼指尖流淌
关于SQL SERVER邮件预警的详细流程,可以参照我之前的一篇文章,http://www.cnblogs.com/zhijianliutang/p/4421556.html
10楼ChuckLu
@请叫我头头哥,和浏览器无关吧,我用的360浏览器,再吐槽下,我qq邮箱收到了通知。然后从qq邮箱打开链接,显示是正常的。,,然后,我刷新下这个页面。字体又废了
9楼童2
写的很好详细,图文并茂。,关注+1,推荐+1
8楼木宛城主
支持头哥,好多美女
Re: 请叫我头头哥
@木宛城主,哎,城主你得原谅我,生活中没法左拥右抱,也只能来这寻求点刺激了。
7楼sky300
我是打酱油的
6楼沙漠孤烟
同上。 +1 amp;amp; +1,,另外问下楼主, 警报和job是什么关系? 集成?
Re: 请叫我头头哥
@沙漠孤烟,多谢。,job是在一定时间内的去做一些事情。,警报是在一定时间内观察一些事情。,这二者你都可以通俗的理解为sql server自带的一个task。
5楼开发者的忧伤
好文要顶, 话说警报机制确实很受用
Re: 请叫我头头哥
@开发者的忧伤,@指尖流淌,@yyyaaaa,谢谢!
4楼不枉此生
最近被安排做一个项目的维护, 刚好也在研究警报这个东西。,不过好像如果警报开的范畴太大或者作用域太大,对服务器的开销也挺大的。,请问楼主对这一块有好的解决办法吗?
Re: 请叫我头头哥
@不枉此生,这种对于服务器上所有sql server所用到的task或者job等等, 我们可以将这些任务和本身的sql data分离开来。,这样可以有效的减轻服务器的压力。把其他那些乱七八糟的task之类的东东放在一个专门做这种事情的机器上。这样一来可以减轻服务器本身的压力,二来可以更加方便管理!
Re: 远方的客人
@不枉此生,@请叫我头头哥,其实真正意义的服务器,如果是小项目就算了, 大项目的话很少有人话把这些开销和放数据的服务器挤在一块的。
3楼ChuckLu
,截图给你看下,刚提交后的,黄色的背景,相当难看
Re: 请叫我头头哥
@ChuckLu,多谢仁兄的建议与关注- -,,不过这个是我特地设置的- -,你要是真觉得这个不舒服, 我就调回来 = =
2楼枫伶忆
图文并茂,辛苦了。。。
Re: 请叫我头头哥
@枫伶忆,为人民服务!!!
1楼DataCool
头头哥好有情趣啊,赞!玩得一手好jsamp;css
Re: 请叫我头头哥
@DataCool,谬赞了谬赞了, 其实我前台也是近几年开始瞎鼓弄的。