创建 WMI 事件警报

适用于:SQL ServerAzure SQL 托管实例

重要

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

  1. 对象资源管理器中, 选择加号按钮以展开用于创建 WMI 事件警报的服务器。

  2. 选择加号以展开 SQL Server 代理

  3. 右键单击 警报 并选择 新警报

  4. 新建警报 对话框的 名称 框中,输入此警报的名称。

  5. 选中 “启用”复选框,使警报能够运行。 默认情况下,选中“启用”。

  6. 类型 列表中,选择 WMI 事件警报

  7. WMI 事件警报定义下,在 命名空间 框中,指定 WMI 查询语言(WQL)语句的 WMI 命名空间,该语句标识哪些 WMI 事件将触发此警报。

  8. 查询 框中,指定标识此警报响应的事件的 WQL 语句。

  9. 选择 确定

使用 Transact-SQL

  1. 对象资源管理器中,连接到数据库引擎的实例。

  2. 在标准栏上,选择“新建查询”

  3. 将以下示例复制并粘贴到查询窗口中,然后选择 执行

    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
    

后续步骤