创建 WMI 事件警报

本主题说明如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 2012 中创建 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 结合使用

本主题内容

  • 开始之前:

    限制和局限

    安全性

  • 若要创建 WMI 事件警报,可使用:

    SQL Server Management Studio

    Transact-SQL

开始之前

限制和局限

  • 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 事件警报

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

  2. 单击加号以展开**“SQL Server 代理”**。

  3. 右键单击**“警报”并选择“新建警报”**。

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

  5. 选中**“启用”复选框将运行警报。 默认情况下,“启用”**为选中状态。

  6. 在**“类型”列表中,选择“WMI 事件警报”**。

  7. 在**“WMI 事件警报定义”下的“命名空间”**框中,为标识触发该警报的 WMI 事件的 WMI 查询语言 (WQL) 语句指定 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)

用于“返回首页”链接的箭头图标[返回页首]