创建 WMI 事件警报
重要
Azure SQL 托管实例,目前大多数但并非所有 SQL Server 代理功能都受支持。 有关详细信息,请参阅 Azure SQL 托管实例与 SQL Server 的 T-SQL 差异。
本文介绍如何使用 SQL Server Management Studio 或 Transact-SQL 配置在 SQL Server 中由 WMI 提供程序监控特定 SQL Server 事件时触发的 SQL Server 代理警报。
有关使用 WMI 提供程序监视 SQL Server 事件的信息,请参阅 用于服务器事件类和属性的 WMI 提供程序。 有关接收 WMI 事件警报通知所需的权限的信息,请参阅 为 SQL Server 代理服务选择帐户。 有关 WQL 的详细信息,请参阅 将 WQL 与用于服务器事件的 WMI 提供程序配合使用。
局限和限制
SQL Server Management Studio 提供了一种简单、图形的方式来管理整个警报系统,并推荐用于配置警报基础结构的方法。
使用
xp_logevent
生成的事件发生在master
数据库中。 因此,只有当警报的@database_name
为'master'
或 NULL 时,xp_logevent
才会触发警报。仅支持运行 SQL Server 代理的计算机上的 WMI 命名空间。
权限
默认情况下,只有 sysadmin 固定服务器角色的成员才能执行 sp_add_alert
。
使用 SQL Server Management Studio
在 对象资源管理器中, 选择加号按钮以展开用于创建 WMI 事件警报的服务器。
选择加号以展开 SQL Server 代理。
右键单击 警报 并选择 新警报。
在 新建警报 对话框的 名称 框中,输入此警报的名称。
选中 “启用”复选框,使警报能够运行。 默认情况下,选中“启用”。
在 类型 列表中,选择 WMI 事件警报。
在 WMI 事件警报定义下,在 命名空间 框中,指定 WMI 查询语言(WQL)语句的 WMI 命名空间,该语句标识哪些 WMI 事件将触发此警报。
在 查询 框中,指定标识此警报响应的事件的 WQL 语句。
选择 确定。
使用 Transact-SQL
在 对象资源管理器中,连接到数据库引擎的实例。
在标准栏上,选择“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后选择 执行。
USE msdb; GO EXEC dbo.sp_add_alert @name = N'Test Alert 2', @message_id = 54001, @notification_message = N'Error 54001 has occurred on the Sales.SalesOrderDetail table on the AdventureWorks2022 database.', @wmi_namespace = '\.\root\Microsoft\SqlServer\ServerEvents', @wmi_query = N'SELECT * FROM ALTER_TABLE WHERE DatabaseName = ''AdventureWorks2022'' AND SchemaName = ''Sales'' AND ObjectType=''Table'' AND ObjectName = ''SalesOrderDetail'''; GO