【译】第三篇 SQL Server代理警报和操做员

本篇文章是SQL Server代理系列的第三篇,详细内容请参考原文html


正如这一系列的上一篇所述,SQL Server代理做业是由一系列的做业步骤组成,每一个步骤由一个独立的类型去执行,除了步骤中执行的工做外,你可能想给DBA(或其余人)发送消息告知做业执行成功/失败。当系统遇到问题,好比性能问题,或者达到系统的阈值,你可能但愿有信息发送。SQL Server代理提供建立警报的能力,能够将消息以通知的形式发送到指定的操做员,以协助你处理这些任务。
SQL Server代理警报是什么
SQL Server代理警报是对于数据库系统上的某些条件的自动响应。警报能够经过下列条件触发:
->产生数据库系统消息
->检测到最低级别的系统错误
->SQL Server计数器达到指定阈值
->WMI查询结果知足
一旦警报被触发,警报中所定义的响应就会发生。响应多是运行一个特定的SQL Server代理做业,或者是通知一个或多个操做员。你还能够选择指定的错误文本包含到任何要发送的通知中。
SQL Server代理操做员是什么
SQL Server代理操做员能够简单地看成一个电子邮件地址。它有其余选项,如Net send地址,寻呼电子邮件名称,事实上寻呼就是用来发送邮件的。
注意:“Net Send”仍然是SQL Server警报选项,但此功能不可用于实践,官方已经不赞同使用,这意味着它将在将来版本的SQL Server中移除。警报惟一可行的选择是经过电子邮件通知。
当定义一个操做员,你可使用操做员发送电子邮件(或经过电子邮件发送短信)来定义的电子邮件别名。电子邮件别名多是一个或多个待命处理系统问题的DBA组合。重要的提醒,你可能想使用升级操做,例如能够将短信发送到手机。
建立操做员
为了建立操做员,首先打开SSMS,在SQL Server代理下面导航到操做员。右击操做员,而后选择新建操做员,如图3.1所示

图3.1 新建操做员
图3.1中,我已经指定的操做员的名称和电子邮件名称,确保点击的“肯定”按钮,不然这个操做员不会有警报。
当你选择通知选项,你会看到一个已经分配给这个操做员的警报列表。由于这是新建立的操做员,因此图3.2中列表是空的,点击肯定,操做员就建立好了。

图3.2 新建操做员的通知页面
在一个操做系统,预计至少要存在两个操做员。一个紧急系统通知(例如咱们刚才建立的Server_Alerts操做员);一个分担工做,用于SQL Server代理做业和/或普通的错误。
操做员固然也能够用Transact-SQL定义。你能够用sp_add_operator系统存储过程来建立一个操做员。更多语法上的帮助,请查看联机丛书。
注意:一个关于操做员的普通问题是如何发送警报给多人。你能够经过邮件系统使用电子邮件分发列表,由于SQL Server代理只会发出警报给单一的操做员。所以你能够给操做员定义一个分配表,列表上的每一个人将会收到相关的通知。
防故障操做员
防故障操做员使用于其余操做员通知失败的时候。有几个可能的缘由致使这种失败(例如,在你的邮件系统故障,咱们将在下一篇文章看到)。一旦你已经建立了一个或多个操做员就能够定义防故障操做员。防故障操做员是一个指定为最后接触手段的操做员。
你能够定义一个防故障操做员,在SQL Server代理属性对话框(右键单击SQL Server代理,选择属性),在警报系统页面。勾选启用防故障操做员,而后从列表中选择你已定义的操做员,如图3.3所示。当完成选择后点击“肯定”。注意:本页上的选项的其他部分将在个人下一篇文章中数据库邮件讲解。

图3.3 启用防故障操做员
建立警报
如今咱们准备实际建立警报,这正如咱们前面看到的,警报是对于数据库系统上的某些条件的自动响应。定义一个新的警报,导航到SQL Server代理->警报,右击并选择“新的警报”弹出新建警报对话框,如图3.4所示。做为第一个警报,咱们将建立一个警报以通知DBA任何系统级错误(严重性为19或更高)。

图3.4 新建警报
SQL Server事件警报
就如操做员,警报必须可以有任何警报发生。请注意,在这个例子中,“类型”选择的是“SQL Server事件警报”。你也能够选择“SQL Server性能条件警报”,提供了可视化的SQL Server性能计数器用于与此关联的实例。咱们将在下一节中看到一个性能条件警报。最后,有一个“WMI事件警报”,将容许你编写Windows管理规范(WMI)查询和响应他们的警报。
严重性的下拉菜单中列出全部与SQL Server相关的可能错误严重级别。在19级或以上的错误是很是严重的错误,可能须要DBA干预调查为何发生一个严重的错误。
一旦你选定图3.4中的选项,点击响应看看能够采起什么样的行动(如图3.5所示)。你会看到,你能够执行一个SQL Server代理做业,或通知操做员(例如,咱们上面定义的操做员)。在这个例子中,咱们选择发送一封电子邮件给咱们的Severe_Alerts操做员。

图3.5 新建警报响应页面
你能够切换到“选项”页以对这个警报作一些有趣的选择,如图3.6所示。选择警报错误文本发送方式,若是你想知道为何警报被发送给你(不然了解警报可能会有难度)。这一页还容许您指定一个额外的通知消息,这个能够用来在凌晨3点提醒你要醒了,或者做为搜索字符串来查找SQL Server的邮件。若是只是一个常见的报警条件,你能够选择使用默认的通知消息,彻底不必本身再补充。延迟选项指定你是否每次触发警报获得一个通知,或者是否一个“X”分钟或秒数是足够好。例子中,5分钟的延迟设置,使您的电子邮件不会被相同的问题致使收件箱暴满。

图3.6 新建警报选项页面
当你完成了对话框中的选择,单击“肯定”,你就建立了一个新的警报。
固然,你也能够经过sp_add_alert系统存储过程建立警报。咱们能够在SSMS中将刚才建立的警报生成脚本,如图3.7所示。

图3.7 警报脚本
警报豁免
你能够指定某些错误信息在警报中永远不发送。定义这样的错误,你必须手动更新服务器上的注册表。注册表中的位置是在你的特定实例注册表项,SQL Server代理文件夹下,你会发现一个名为“NonAlertableErrors”,如图3.8所示。默认状况下,有两个错误编号:1204(不能得到锁)和4002(登陆失败)。若是你须要这些错误信息的警报,你就得编辑注册表项从列表中移除错误编号。相反,若是你不想收到某些错误信息的警报,你能够在此列表中添加对应的错误编号。固然,一般编辑注册表的时候要格外当心。

图3.8 注册表编辑NonAlertableErrors
性能条件警报
警报的第二种类型是性能条件警报。你能够设置许多基于性能计数器的警报。不幸的是,你仅仅限于和SQL Server相关的计数器,但仍然容许你为你的系统添加至关多的自动监测。例如,在下面的截图中(图3.9),在DBA_Monitor数据库中的事务日志超过90%的时候会收到一个警告。可参考图3.4和图3.5对警报进行设置,在响应页面,你能够执行一个SQL Server代理做业(增长日志空间,或开始一个备份),或通知操做员(上面定义过的操做员)。在这个例子中,咱们选择发送一封电子邮件给咱们的Severe_Alerts操做员。

图3.9 性能条件警报
警报扩展
除了文章中建立的高严重程度的警报,你应该了解警报的其余方面。在性能计数器和WMI查询上设置警报是很是强大的。虽然只有SQL Server特定的性能计数器,没有如CPU这类的系统计数器。然而,你仍然能够设置警报,当SQL Server登陆数,或SQL Server内存,或I/O超过某个阈值时。
此外,当警报发生时自动执行一个做业意味着你能够解决许多常见的错误,而不是每次都要人为干预。
下一篇
在全部的SQL服务器系统至少要配置一个基本的警报。这将确保最严重的错误,一些通知发送到您的DBA团队。固然,电子邮件警报依赖于SQL Server能够发送电子邮件,因此下一篇文章将着重讨论如何配置数据库邮件。sql

相关文章
相关标签/搜索