第三篇 SQL Server代理警报和操作员
本篇文章是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代理警报和操作员的更多相关文章
- 【译】第三篇 SQL Server代理警报和操作员
本篇文章是SQL Server代理系列的第三篇,详细内容请参考原文. 正如这一系列的上一篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行,除了步骤中执行的工 ...
- SQL Server代理警报
使用SQL Server代理警报的前提条件1.创建操作员,接收消息的用户2.创建警报,满足某种条件触发警报,并作出响应(执行作业或/和通知操作员)3.配置数据库邮件,用于发送消息通知4.SQL Ser ...
- 第六篇 SQL Server代理深入作业步骤工作流
本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...
- 【译】第六篇 SQL Server代理深入作业步骤工作流
本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...
- 第十篇 SQL Server代理使用代理帐户
本篇文章是SQL Server代理系列的第十篇,详细内容请参考原文 在这一系列的上一篇,你查看了msdb库下用于授权访问SQL Server代理的安全角色.这些角色包括SQLAgentUserRole ...
- 第九篇 SQL Server代理了解作业和安全
本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...
- 第八篇 SQL Server代理使用外部程序
本篇文章是SQL Server代理系列的第八篇,详细内容请参考原文 在这一系列的上一篇,学习了如何用SQL Server代理作业活动监视器监控作业活动和查看作业历史记录.在实时监控和管理SQL Ser ...
- 【译】第十篇 SQL Server代理使用代理帐户
本篇文章是SQL Server代理系列的第十篇,详细内容请参考原文 在这一系列的上一篇,你查看了msdb库下用于授权访问SQL Server代理的安全角色.这些角色包括SQLAgentUserRole ...
- 【译】第九篇 SQL Server代理了解作业和安全
本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...
随机推荐
- Hadoop如何恢复被删除的文件
hadoop的hdfs中被删除文件的恢复原理和回收站原理是一样的,就是在删除hdfs文件时,被删除的文件被移动到了hdfs的.Trash文件夹中,恢复时只需将该文件夹中文件拿出即可.具体操作如下: 1 ...
- 2016.09.14,英语,《Using English at Work》全书笔记
半个月时间,听完了ESLPod出品的<Using English at Work>,笔记和自己听的时候的备注列在下面.准备把每个语音里的快速阅读部分截取出来,放在手机里反复听. 下一阶段把 ...
- eclipse 版本号
Eclipse 3.1 版本代号 IO [木卫1,伊奥] Eclipse 3.2 版本代号 Callisto [木卫四,卡里斯托 ]Eclipse 3.3 版本代号 Eruopa [木卫二,欧罗巴 ...
- 【翻译】Kinect v2程序设计(C++) BodyIndex篇
通过Kinect SDK v2预览版,取得BodyIndex(人体区域)的方法和示例代码. 上一节,介绍了从Kinect v2预览版用Kinect SDK v2预览版获取Depth数据的方法. 这 ...
- [转]常用 Git 命令清单
作者: 阮一峰 我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专 ...
- Unity 为NGUI增加体感输入方式
背景 NGUI在处理UI和输入方面确实做的不错,但是现在的问题是公司引入体感之后,是通过手的位置来实现按钮的点击操作,前提我不想改变原先设计好的NGUI界面和机制,怎么破? NGUI的输入底层机制 N ...
- HTML: Css初始化
相同的元素, 如ul>li,body等元素在不同的瀏覽器下被渲染的效果不同(各個瀏覽器對這些元素的border,margin,padding,font-size等等的初始值不同), 要讓他們表現 ...
- mysql 锁
Lock table有两种模式 lock tables table_name read [or write]; test1: session 1: lock tables tmp_xf_lock; ...
- myeclipse添加源码支持
在MyEclipse中开发,习惯于点击类名,按Ctrl键查看源码,但是,如果是Spring/Hibernate/Struts/JDK这些开源jar的源码该如何看呢? 一般,我们导入的只有jar文 件, ...
- 关于xampp使用不同端口的虚拟机
1.打开apache/conf/httpd.conf文件加入listen 8080(监听的端口号) 然后加入 # Virtual hostsInclude "conf/extra/httpd ...