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


正如这一系列的上一篇所述,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 Server代理警报和操作员的更多相关文章

  1. 【译】第三篇 SQL Server代理警报和操作员

    本篇文章是SQL Server代理系列的第三篇,详细内容请参考原文. 正如这一系列的上一篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行,除了步骤中执行的工 ...

  2. SQL Server代理警报

    使用SQL Server代理警报的前提条件1.创建操作员,接收消息的用户2.创建警报,满足某种条件触发警报,并作出响应(执行作业或/和通知操作员)3.配置数据库邮件,用于发送消息通知4.SQL Ser ...

  3. 第六篇 SQL Server代理深入作业步骤工作流

    本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...

  4. 【译】第六篇 SQL Server代理深入作业步骤工作流

    本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...

  5. 第十篇 SQL Server代理使用代理帐户

    本篇文章是SQL Server代理系列的第十篇,详细内容请参考原文 在这一系列的上一篇,你查看了msdb库下用于授权访问SQL Server代理的安全角色.这些角色包括SQLAgentUserRole ...

  6. 第九篇 SQL Server代理了解作业和安全

    本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...

  7. 第八篇 SQL Server代理使用外部程序

    本篇文章是SQL Server代理系列的第八篇,详细内容请参考原文 在这一系列的上一篇,学习了如何用SQL Server代理作业活动监视器监控作业活动和查看作业历史记录.在实时监控和管理SQL Ser ...

  8. 【译】第十篇 SQL Server代理使用代理帐户

    本篇文章是SQL Server代理系列的第十篇,详细内容请参考原文 在这一系列的上一篇,你查看了msdb库下用于授权访问SQL Server代理的安全角色.这些角色包括SQLAgentUserRole ...

  9. 【译】第九篇 SQL Server代理了解作业和安全

    本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...

随机推荐

  1. [转]一步一步asp.net_购物车订单与支付宝

    本文转自:http://www.cnblogs.com/mysweet/archive/2012/05/19/2508534.html 最近这几天很忙,一边忙着准备一堆课程设计(8门专业课.....伤 ...

  2. HP StorageWorks MSL2024 Tape Libraries - Robotic Error Sub-Codes

    Robotic error sub-codes Mechanical initialization failure 02 Connection to slave robotic failed 03 E ...

  3. hibernate将本地SQL查询结果封装成对象

    hibernate将本地SQL查询结果封装成对象 不知道大家有没有碰过这种情况,迫于很多情况只能用native SQL来查询(如:复杂统计等),然而使用native查询后,结果会被放到object里, ...

  4. IDM 通过防火墙规则阻止激活验证

    1. 打开Windows防火墙 2. 高级设置-->出站规则-->新建规则 3. 添加IDM程序路径,阻止连接 4. 在属性中添加作用域,远程IP地址: DNS解析出IP:register ...

  5. android 定位的四种方式

    [原文]  开发中对于地图及地理位置的定位是我们经常要用地,地图功能的使用使得我们应用功能更加完善,下面总结了一下网络中现有对于介绍android定位的4种方式,希望对大家有帮助: android 定 ...

  6. c#循环迭代匿名类链表(可迭代的匿名类)

    Main(){ //为什么?object是基类啊!! //报错.不能从List<anonymous>换成List<object>. //var q=(List<objec ...

  7. cwe

  8. 通过runtime替换系统类实现的代码(从github开源库fdstackview中摘录)

    其中部分代码为汇编:由此可见oc的runtime的灵活性和能力.此代码仅供参考 // ---------------------------------------------------- // R ...

  9. Java高级之线程同步

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 关于实现多线程的意义,"从业四年看并发"一文已经讲述,而本篇主要讲一下常用的设计 ...

  10. 设计模式:适配器模式(Adapter)

    定  义:将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 有些国家用110V电压,而我们国家用的是220V,但是我们的电器,比 ...