【译】第三篇 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代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...
- 【译】第一篇 SQL Server代理概述
本篇文章是SQL Server代理系列的第一篇,详细内容请参考原文. SQL Server代理是SQL Server的作业调度和告警服务,如果使用得当,它可以大大简化DBA的工作量.SQL Serve ...
- 【译】第二篇 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代理系列的第十篇,详细内容请参考原文 在这一系列的上一篇,你查看了msdb库下用于授权访问SQL Server代理的安全角色.这些角色包括SQLAgentUserRole ...
- 【译】第八篇 SQL Server代理使用外部程序
本篇文章是SQL Server代理系列的第八篇,详细内容请参考原文 在这一系列的上一篇,学习了如何用SQL Server代理作业活动监视器监控作业活动和查看作业历史记录.在实时监控和管理SQL Ser ...
- 【译】第五篇 SQL Server代理理解代理错误日志
本篇文章是SQL Server代理系列的第五篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.在第四篇中我们看到 ...
随机推荐
- LR监控apache服务器
开启mod_status模块功能,在LR的controller中找到apache资源图双击并右键添加度量,如下图: 添加apache服务器IP地址.选择系统平台.添加需要监控的计数器即可进行 ...
- laravel5.6 调用第三方类库
大概流程: 1. 新建一个目录方类库 2. 配置composer配置文件 3. 在项目中使用终端运行composer dumpautoload 4. 使用时 方法调用可以new对象后->方法名 ...
- MVC中ajax提交表单示例
页面中: @using (Ajax.BeginForm("Login", "User", new AjaxOptions() { HttpMethod = &q ...
- JSON字符串转换成对象时候 需要有默认构造器 因为这是通过反射创建的 反射是先通过默认构造器创建对象的
JSON字符串转换成对象时候 需要有默认构造器 因为这是通过反射创建的 反射是先通过默认构造器创建对象的
- 【bzoj4709】[Jsoi2011]柠檬 斜率优化
题目描述 给你一个长度为 $n$ 的序列,将其分成若干段,每段选择一个数,获得 $这个数\times 它在这段出现次数的平方$ 的价值.求最大总价值. $n\le 10^5$ . 输入 第 1 行:一 ...
- C++解析(29):类型识别
0.目录 1.类型识别 2.动态类型识别 3.类型识别关键字 4.小结 1.类型识别 在面向对象中可能出现下面的情况: 基类指针指向子类对象 基类引用成为子类对象的别名 静态类型--变量(对象)自身的 ...
- UVA - 11997(巧妙的优先队列)
题意: 有k个整数数组,各包含k个元素,在每个数组中取一个元素加起来,可以得到kk个和,求这些和中最小的k个值 解析: 从简单的情况开始分析:经典方法,对原题没有思路,那么分析问题的简化版 这是对于两 ...
- Tribles UVA - 11021(全概率推论)
题意: 有k只麻球,每只只活一天,临死之前可能会出生一些新的麻球, 具体出生i个麻球的概率为P,给定m,求m天后麻球全部死亡的概率. 解析: 从小到大,先考虑一只麻球的情况 设一只麻球m天后全部死亡 ...
- [bzoj3238]差异(后缀数组+单调栈)
显然我们可以先把len(Ti)+len(Tj)的值先算出来,再把LCP减去.所有len(Ti)+len(Tj)的值为n*(n-1)*(n+1)/2,这个随便在纸上画一画就可以算出来的. 接下来问题就是 ...
- Linux基础-正则表达式整理---------------grep、sed、awk
目录: Ⅰ:正则表达式 Ⅱ:作业 Ⅰ:正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在lin ...