警报

适用于: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 事件的警报

定义对警报 的响应

创建用户定义的事件错误消息

修改用户定义的事件错误消息

删除用户定义的事件错误消息

禁用或重新激活警报

另请参阅

sp_update_alert(Transact-SQL)