警报
适用于:SQL Server
重要
Azure SQL 托管实例,目前大多数但并非所有 SQL Server 代理功能都受支持。 有关详细信息,请参阅 Azure SQL 托管实例中 T-SQL 与 SQL Server 的差异。
事件由 SQL Server 生成,并输入到 Microsoft Windows 应用程序日志中。 SQL Server 代理读取应用程序日志,并将写入的事件与定义的警报进行比较。 当 SQL Server 代理找到匹配项时,它会触发警报,这是对事件的自动响应。 除了监视 SQL Server 事件之外,SQL Server 代理还可以监视性能条件和 Windows Management Instrumentation (WMI) 事件。
若要定义警报,请指定:
警报的名称。
触发警报的事件或性能条件。
SQL Server 代理在响应事件或性能状态时采取的操作。
给警报命名
每个警报都必须有一个名称。 警报名称在 SQL Server 实例中必须唯一,并且不能超过 128 个字符。
选择事件类型
警报响应特定类型的事件。 警报响应以下事件类型:
SQL Server 事件
SQL Server 性能条件
WMI 事件
事件的类型确定用于指定精确事件的参数。
指定 SQL Server 事件
可以指定要发生的警报以响应一个或多个事件。 使用以下参数指定触发警报的事件:
错误号
发生特定错误时,SQL Server 代理会触发警报。 例如,可以指定错误号 2571 以响应未授权尝试调用数据库控制台命令(DBCC)。
严重性级别
当发生特定严重性的任何错误时,SQL Server 代理会触发警报。 例如,可以指定严重级别 15 以响应 Transact-SQL 语句中的语法错误。
数据库
仅当特定数据库中发生事件时,SQL Server 代理才会触发警报。 除了错误号或严重性级别外,此选项还适用。 例如,如果实例包含一个用于生产的数据库和一个用于报告的数据库,则可以定义仅响应生产数据库中语法错误的警报。
事件文本
当指定事件包含事件消息中的特定文本字符串时,SQL Server 代理会触发警报。 例如,可以定义响应包含特定表或特定约束名称的消息的警报。
选择性能条件
可以指定一个警报以响应特定的性能条件。 在这种情况下,可以指定要监视的性能计数器、警报的阈值,以及计数器在发生警报时必须显示的行为。 若要设置性能条件,必须在 新警报 的 SQL Server 代理 常规 页或 警报属性 对话框中定义以下项:
对象
对象是要监视的性能表现区域。
计数器
计数器是需要监视的区域的属性。
实例
SQL Server 实例定义要监视的属性的特定实例(如果有)。
当计数器 和数值 分别满足 条件时,触发 警报。
警报的阈值和生成警报的行为。 阈值是一个数字。 此行为是以下 之一:低于,等于,或 高于为值指定的数字。 值 是描述性能条件计数器的数字。 例如,若要将性能对象 SQLServer:Locks 设置警报,当 锁定等待时间 超过 30 分钟时,可以选择 高于,将 30 指定为值。
作为另一个示例,可以指定当 temp db 中的可用空间低于 1000 KB 时,性能对象 SQLServer:Transactions 发生警报。 若要设置此设置,请选择 tempdb (KB) 中的计数器可用空间,低于,值 为 1000 。
注意
定期采样性能数据,这可能会导致达到阈值与出现性能警报之间的小延迟(几秒钟)。
注意
存储服务器名称的事件日志变量限制为 32 个字符。 因此,如果主机名和实例名称的组合大小大于 32 个字符,可能会收到以下错误:
Warning,[466] Failed to copy server name LONGNAMESQLSERV\LONGINSTANCENAME while generating performance counter alerts.
选择 WMI 事件
可以指定警报是在响应特定 WMI 事件时发生的。 若要选择 WMI 事件,必须在 “新建警报”或“警报属性”对话框的“SQL Server 代理”“常规” 页上定义以下内容:
命名空间
SQL Server 代理注册为一个 WMI 客户端,在提供用于查询事件的命名空间中进行注册。
查询
SQL Server 代理使用提供的 Windows Management Instrumentation 查询语言 (WQL) 语句来标识特定事件。
以下是指向常见任务的链接:
创建基于消息编号的警报
基于严重性级别创建警报
创建基于 WMI 事件的警报
定义对警报 的响应
创建用户定义的事件错误消息
修改用户定义的事件错误消息
删除用户定义的事件错误消息
禁用或重新激活警报