监视和响应事件
重要
Azure SQL 托管实例,目前大多数但并非所有 SQL Server 代理功能都受支持。 有关详细信息,请参阅 Azure SQL 托管实例与 SQL Server 的 T-SQL 差异。
SQL Server 代理可以监视和自动响应 事件,例如来自 SQL Server 的消息、特定的性能条件和 Windows Management Instrumentation (WMI) 事件。
在本部分中
警报
包含有关命名警报以及选择警报响应的事件或性能条件的信息。
创建 User-Defined 事件
包含有关如何创建不由 SQL Server 预定义的事件的信息。
运算符
包含有关为管理员创建别名的信息,这些别名可供 SQL Server 代理在作业失败或成功时用来发送通知。
关于监控和应对事件
自动事件响应被称为 警报。 可以针对一个或多个事件定义警报,以指定希望 SQL Server 代理如何响应其发生情况。 警报可以通过通知管理员、运行作业或两者同时进行来响应事件。 警报还可以将事件转发到其他计算机上的 Microsoft Windows 应用程序日志。 例如,可以指定当严重性为 19 的事件发生时立即通知作员。 通过定义警报,数据库管理员可以更有效地监视和管理 SQL Server。
SQL Server 代理仅响应为其定义了警报的事件。 SQL Server 代理用来监视事件的方法取决于事件的类型。
为性能计数器定义 SQL Server 代理警报时,SQL Server 代理直接监视性能计数器。 对于 WMI 事件,SQL Server 代理为 WMI 事件注册事件查询。
为了响应来自 SQL Server 的消息,SQL Server 代理监视 Windows 应用程序日志。 SQL Server 代理只能响应此日志中显示的消息。 默认情况下,SQL Server 会在 Windows 应用程序日志中记录以下消息:
严重性等级为 19 或更高级别的 sysmessages 错误。
如果您还想记录严重性低于19的特定sysmessages错误,可以使用 sp_altermessage 存储过程将这些错误指定为“始终记录”。
使用 WITH LOG 语法调用的任何 RAISERROR 语句。
建议使用 RAISERROR WITH LOG 从 SQL Server 实例写入 Windows 应用程序日志。
使用 xp_logevent 记录的任何应用程序事件。
注意
日志记录应用程序事件会占用日志空间,并可能导致 Windows 应用程序日志超出其最大大小。 确保最大 Windows 应用程序日志大小足够大,以避免丢失 SQL Server 事件信息。
当 SQL Server 记录消息时,SQL Server 代理服务会将该消息与 SQL Server 管理员定义的警报进行比较。
无论事件的源如何,SQL Server 代理服务都会通过执行事件警报中指定的任务来响应事件。