创建 WMI 事件警报

本主题介绍如何在使用 SQL Server Management Studio 或 Transact-SQL 监视由 SQL Server 2014 中 WMI Provider for Server 事件监视的特定 SQL Server 事件时引发的 SQL Server 代理警报。

有关使用 WMI 提供程序监视 SQL Server 事件的信息,请参阅 适用于服务器事件的 WMI 提供程序概念。 有关接收 WMI 事件警报通知所需的权限的信息,请参阅 为 SQL Server 代理服务选择帐户。 有关 WQL 的详细信息,请参阅 将 WQL 与用于服务器事件的 WMI 提供程序配合使用

本主题内容

在您开始之前

局限性与限制

  • SQL Server Management Studio 提供了一种简单、图形的方式来管理整个警报系统,并推荐用于配置警报基础结构的方法。

  • 使用 xp_logevent 生成的事件发生在 master 数据库中。 因此,xp_logevent 不会触发警报,除非警报的 @database_name'master' 或 NULL。

  • 仅支持运行 SQL Server 代理的计算机上的 WMI 命名空间。

安全

权限

默认情况下,只有 sysadmin 固定服务器角色的成员才能执行 sp_add_alert

使用 SQL Server Management Studio

创建 WMI 事件警报

  1. 对象资源管理器中, 单击加号以展开要在其中创建 WMI 事件警报的服务器。

  2. 单击加号以展开 SQL Server 代理

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

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

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

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

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

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

  9. 单击 “确定”

使用 Transact-SQL

创建 WMI 事件警报

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

  2. 在标准栏上,单击“新建查询”

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

    -- creates a WMI event alert that retrieves all event properties for any ALTER_TABLE event that occurs on table AdventureWorks2012.Sales.SalesOrderDetail  
    -- This example assumes that the message 54001 already exists.  
    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 AdventureWorks2012 database. Please see the following information...',  
        @wmi_namespace = '\\.\root\Microsoft\SqlServer\ServerEvents\,  
        @wmi_query = N'SELECT * FROM ALTER_TABLE   
    WHERE DatabaseName = 'AdventureWorks2012' AND SchemaName = 'Sales'   
        AND ObjectType='Table' AND ObjectName = 'SalesOrderDetail'';  
    GO  
    

有关详细信息,请参阅 sp_add_alert(Transact-SQL)