使用SQL Server代理警报的前提条件
1、创建操作员,接收消息的用户
2、创建警报,满足某种条件触发警报,并作出响应(执行作业或/和通知操作员)
3、配置数据库邮件,用于发送消息通知
4、SQL Server代理->属性->警报系统->启用邮件配置文件,选择对应的邮件系统及配置文件
详细配置步骤请参考SQL Server代理警报和操作员SQL Server代理配置数据库邮件
测试服务器按上述方式配置后,模拟满足触发警报的条件,并没有出现预期结果,SQL Server代理日志如下:

[264] 尚未建立电子邮件会话就试图发送电子邮件。搜索问题只需重启代理服务即可。
一、如何给多人发送警报?
方法一、操作员->常规->电子邮件名称,按照mail1;mail2;mail3这种格式,将需要发送的邮件地址加上:

方法二、创建新的操作员,然后在警报的响应页勾选要通知的操作员:

下图是电子邮件名称带多个地址及通知多个操作员的邮件发送记录:

二、上次警报的日期和上次响应的日期是如何界定?

满足条件触发警报,更新上次警报的日期;如果响应中有设置执行作业或/和通知操作员,则执行这些操作时,更新上次响应的日期。
msdb..sp_sqlagent_get_perf_counters is used to fire the the sqlagent alerts.
Whenever there is alert set,this procedure is executed in background to determine the threshold limits, be it an alert for any performance condition.
You mention that it runs frequently,but by default its 20 seconds.Theres a registry key to change the interval HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.SQL08R2\SQLServerAgent\PerformanceSamplingInterval

默认每20秒检查是否触发警报,只有满足条件才会触发,然后根据响应执行作业或/和通知操作员。响应受限于选项中的[两次响应之间的延迟时间],延迟时间在警报太频繁时,避免发送太多通知挤爆邮箱。
测试创建的警报如下:

只有SQL Server特定的性能计数器,没有如CPU这类的系统计数器:

警报对应的数据库邮件日志(日志记录级别设置为详细)如下:

由于测试中一直满足触发警报的条件,从数据库邮件日志也可以看出每20秒发送一次邮件。
收到的警报邮件如下:

注意响应操作得到的数据是响应时刻的数据。例如,在上面的测试中将[两次响应之间的延迟时间]设置为10分钟,实际上每20秒会触发警报,但每10分钟才发送一次邮件。如果我们在第8分钟时修改Log File(s) Used Size (KB),在第10分钟发送的邮件将是修改后的数值信息。
09:32 2016/5/25 操作员的电子邮件名称带有多个邮件地址时,响应邮件有时会发送失败。下面是测试样例,[两次响应之间的延迟时间]设置为2分钟,sysmail_mailitems显示总共发送7封邮件,3封发送失败:

收到的邮件如下:

数据库邮件日志如下:

根据提示的链接,查找DT:SPM代码对应的说明:
451 DT:SPM ,please try again 邮件正文带有垃圾邮件特征或发送环境缺乏规范性,被临时拒收。请保持邮件队列,两分钟后重投邮件。需调整邮件内容或优化发送环境;
550 DT:SPM 邮件正文带有很多垃圾邮件特征或发送环境缺乏规范性。需调整邮件内容或优化发送环境;
554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件;
意思就是邮件正文不合规,被当作垃圾邮件拒收。如果电子邮件名称只含一个地址就不会出现这样的错误。因此为了能及时收到通知消息,建议在电子邮件名称只包含一个地址。可以在邮件系统将多个用户合并到一个分组。

SQL Server代理警报的更多相关文章

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

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

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

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

  3. SQL Server代理(3/12):代理警报和操作员

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这个系列的文章里所见,SQL Se ...

  4. SQL Server代理(6/12):作业里的工作流——深入作业步骤

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这里系列的前几篇文章所见,SQL ...

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

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

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

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

  7. SQL Server代理(4/12):配置数据库邮件

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在以前的文章里我们看到,SQL Serve ...

  8. SQL Server代理(2/12):作业步骤和子系统

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. SQL Server代理作业有一系列的一个 ...

  9. SQL Server代理(1/12):配置和概况

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. SQL Server代理是SQL Serv ...

随机推荐

  1. osg中遇到的问题

    osg中遇到的问题 今天写程序的时候, 需要把键盘和鼠标消息转发出来, 就直接写了接口用signal丢出来了. 程序写的很多, 测试的时候却崩溃了.... 在场景中拖拽鼠标左键的时候, 会发现在扔出鼠 ...

  2. C语言(3)

    C语言(3)----数据输入 输入时的关键字为scanf.如我们要从键盘上输入一个数,放在变量a里面,则可以写成scanf("%d",&a); "&&qu ...

  3. 第1章 ZigBee协议栈初始化网络启动流程

    作者:宋老师,华清远见嵌入式学院讲师. ZigBee的基本流程:由协调器的组网(创建PAN ID),终端设备和路由设备发现网络以及加入网络. 基本流程:main()->osal_init_sys ...

  4. Java_Java SE6调用动态编译

    转自:http://www.cnblogs.com/flyoung2008/archive/2011/11/14/2249017.html 一.使用JavaCompiler接口编译java源程序 我们 ...

  5. error while loading shared libraries: libXXX.so.x: cannot open shared object file: No such file or directory .

    转载:http://www.eefocus.com/pengwr/blog/2012-02/235057_baf52.html 此时你可以locate libXXX.so.x 一下,查看系统里是否有该 ...

  6. Maya 脚本控制物体自转

    在Maya中,我们可以用脚本来控制物体的自转方向,速度等等,步骤如下: 选择需要操作的物体object,打开通道盒Channel Box,点击编辑Edit,打开表达式Expressions面板 选择需 ...

  7. Js变量定义——fn里 var与不var的区别

    js运行时内置了一个Global对象. 这个Global对象跟运行环境有关.在浏览器运行环境中.Global就是window对象.在nodejs中.Global对象是global对象. 当你在浏览器环 ...

  8. zk回车事件

    private Textbox testTextB; testTextB.addEventListener(Events.ON_OK, new EventListener<Event>() ...

  9. jsTree 的简单用法--异步加载和刷新数据

    首先这两个文件是必须要引用的,还有就是引用 jQuery 文件就不说了: <link href="/css/plugins/jsTree/style.min.css" rel ...

  10. oracle结构与安全

    从宏观上来看:oracle数据库服务器主要有数据库和实例组成. 在orale数据库服务器中,首先会产生一个实例,通过实例访问一个数据库. 一个实例对应着一个数据库. oracle 数据库在逻辑上是按层 ...