本主题介绍如何在使用 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 提供程序配合使用。
本主题内容
准备工作:
若要创建 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 事件警报
在 对象资源管理器中, 单击加号以展开要在其中创建 WMI 事件警报的服务器。
单击加号以展开 SQL Server 代理。
右键单击 警报 并选择 新警报。
在 新建警报 对话框的 名称 框中,输入此警报的名称。
选中 “启用”复选框,使警报能够运行。 默认情况下,选中“启用”。
在 类型 列表中,选择 WMI 事件警报。
在 WMI 事件警报定义下,在 命名空间 框中,指定 WMI 查询语言(WQL)语句的 WMI 命名空间,该语句标识哪些 WMI 事件将触发此警报。
在 查询 框中,指定标识此警报响应的事件的 WQL 语句。
单击 “确定” 。
使用 Transact-SQL
创建 WMI 事件警报
在 “对象资源管理器” 中,连接到某个数据库引擎实例。
在标准栏上,单击“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后单击 执行。
-- 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)。