本篇文章是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. 离线更新SEPM服务器的病毒定义库

    1. 从http://www.symantec.com/security_response/definitions/download/detail.jsp?gid=sep下载JDB文件    2. 将 ...

  2. php扩展redis,编译安装redis服务

    首先安装redis扩展 https://github.com/phpredis/phpredis 下载http://redis.io/download 服务软件 cd到软件存放目录unzip phpr ...

  3. IOS开发之开篇--CocoaPods安装

    CocoaPods是什么?当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等.可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其 ...

  4. 代理和block反向传值

    代理传值: // SendViewController.h #import <UIKit/UIKit.h> @protocol SendInFor <NSObject> -(v ...

  5. VNC与Windows之间的复制粘贴

    假设目标主机是Linux,终端主机是Windows(就是在Windows上使用VNC登陆Linux): 在Linux中执行: vncconfig -nowin& 在Linux选中文字后,无需其 ...

  6. commandname+commandargument

    (一) CommandName:其实可以设置成一种动作,比如Select,Update,Delete,等操作.就是说CommandName是确定他到底引发的是哪一事件,如果CommandName的名字 ...

  7. javascript中的eval()函数应用以及要点

    eval是干嘛用的?eval是直接将一段字符串作为参数,交给JS引擎预编译器进行动态分析并执行代码.如下: //调试台输出,你可以理解为console.log,再不理解就理解成alert也没事 var ...

  8. Unknown collation: 'utf8mb4_unicode_ci'

    日前给一个政府机关做个小的门户网站,用的是wordpress+主题开发,部署时发现导入数据库sql文本时出现Unknown collation: 'utf8mb4_unicode_ci'的错误,查了下 ...

  9. 郎科U208(主控 PS2251-50 HYNIX H27UCG8T2MYR)量产还原

    6年前的一个U盘 记得还是参加某会议送的,当时做了量产 多做了一个光盘区,现在用不着了  想还原成普通U盘 忘了方法. 可见笔记的重要性 Chipgenius看了主控 PS2251-50 芯片是海力士 ...

  10. w-WAITING---

    <p id="w_last" style="color: red; font-size: 6em;">w-WAITING---</p>& ...