SQL Server代理警报

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

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

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

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

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

满足条件触发警报,更新上次警报的日期;如果响应中有设置执行作业或/和通知操作员,则执行这些操作时,更新上次响应的日期。
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分钟发送的邮件将是修改后的数值信息。

时间: 2024-10-13 01:37:17

SQL Server代理警报的相关文章

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

本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术上是独立的,但是你可以创建工作流贯穿作业中的各个步骤.在这篇文章中,你将学习如何在作业步骤中使用工作流来改变要执行的操作,单一作业有多个条件可以处理.你也会接触作业步骤安全和作业子系统的更多细节.SQL Server代理步骤如第二篇所述,SQL Server代理作业包含一个或多个作业步骤.每一个作业

第四篇 SQL Server代理配置数据库邮件

本篇文章是SQL Server代理系列的第四篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.SQL Server代理同样提供创建警报,能够以通知的形式将消息发送给设定的操作员.这些通知可以通过数据库邮件发送,数据库邮件是内置在SQL Server和SQL Server代理能够发送和接收电子邮件.在这一篇,你将学习如何配置数据库邮件发送和接收操作,以及一些基本的数据库邮件故障排除步骤.数据库邮件的简要概述在S

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

SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. SQL Server代理作业有一系列的一个或多个作业步骤组成.一个作业步骤会分配给特定的作业子系统,用来标识将要进行的作业步骤工作种类.每个作业步骤在各自安全上下文运行,尽管每个作业有可以决定谁可以修改作业的拥有者.这篇文章会聚焦组成SQL Server代理作业的作业步骤和子系统. 作业的快速回顾 认为SQL Server代理作业的最好方式

第一篇 SQL Server代理概述

本系列文章来源于sqlservercentral,详细内容请参考原文. SQL Server代理是SQL Server的作业调度和告警服务,如果使用得当,它可以大大简化DBA的工作量.SQL Server代理的核心是运行批量作业的能力.“批量”可以简单的理解成“一系列的动作”,经常是TSQL脚本.它们可以以作业的形式在特定的调度运行,这个调度你可以选择在只有少量用户访问系统的时间点/段.换而言之,可以使用SQL Server代理排定批量作业.批量作业可以是平常的T-SQL任务,也可以是运行于多个

翻译(十四)——通往SQL Server代理的阶梯-二级:作业步骤和子系统

  翻译(十四)——通往SQL Server代理的阶梯-二级:作业步骤和子系统 Richard Waymire,2017/10/11(首次出版:2011/02/17) 链接: http://www.sqlservercentral.com/articles/SQL+Agent/Job+Steps+and+Subsystems/72268/ 该系列 本文是楼梯系列的一部分:SQL Server代理的阶梯 SQL Server代理是任何实时数据库系统的核心.代理有许多不太明显的用途,因此对于开发人员

翻译:通往SQL Server代理的阶梯-二级:作业步骤和子系统

通往SQL Server代理的阶梯-二级:作业步骤和子系统Richard Waymire,2017/10/11(首次出版:2011/02/17)该系列本文是楼梯系列的一部分:SQL Server代理的阶梯SQL Server代理是任何实时数据库系统的核心.代理有许多不太明显的用途,因此对于开发人员和dba来说,系统的知识总是有用的.Richard Waymire提供了一个简单的解释.SQL Server代理作业是由一系列的一个或多个作业步骤组成的.一个作业步骤被分配到一个特定的工作子系统,它确定

如何修改 SQL Server 代理主作业 (Transact-SQL)

本主题介绍了如何使用存储过程修改 Microsoft SQL Server 代理主作业. 更改作业定义计划的详细信息 1.       执行 sp_update_schedule. 在作业中添加.更改或删除步骤 1.       执行 sp_add_jobstep 来添加新的作业步骤. 2.       执行 sp_update_jobstep 来更改原先存在的作业步骤. 3.       执行 sp_delete_jobstep 来删除原先存在的作业. 修改与作业相关联的目标服务器 1.   

第二篇 SQL Server代理作业步骤和子系统

本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作).每个作业步骤运行于一个单独的安全上下文,尽管每个作业有一个所有者来决定谁可以修改作业.本篇主要关注组成SQL Server代理的作业步骤和子系统.快速回顾作业理解SQL Server代理作业的最佳方式是把相关联的 需要完成给定任务 的组件放在一个容器中.作业最主要的组件有作业步骤.计划.警告和通知.

SQL Server代理(11/12):维护计划作业

SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这一系列的上一篇,我们看了使用代理帐户模仿Windows安全上下文完成作业步骤的工作.大多数子系统支持代理账户,同时子系统限制代理账户, 要求用户必须明确授权可以在作业步骤使用代理凭据.在这一篇,你将检查维护计划.维护计划是用来执行各种任务来优化你的数据库,包括备份.重建和/或重整 索引.更新统计.维护计划会创建作业.这一篇我们将查看维护