创建 WMI 事件警报
重要
Azure SQL 托管实例目前支持大多数(但不是所有)SQL Server 代理功能。 有关详细信息,请参阅 Azure SQL 托管实例与 SQL Server 的 T-SQL 区别。
本文说明如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中创建 SQL Server 代理警报,以便在出现由 WMI Provider for Server Events 监视的特定 SQL Server 事件时触发警报。
有关使用 WMI 提供程序监视 SQL Server 事件的详细信息,请参阅 WMI Provider for Server Events 类和属性。 有关接收 WMI 事件警报通知的所需权限的信息,请参阅 为 SQL Server 代理服务选择帐户。 有关 WQL 的详细信息,请参阅 将 WQL 与 WMI Provider for Server Events 结合使用。
限制和局限
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 事件的 WMI 查询语言 (WQL) 语句指定 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