【问题标题】:SQL Server Alert using WMI Event ERROR使用 WMI 事件错误的 SQL Server 警报
【发布时间】:2023-03-06 23:55:01
【问题描述】:

我想在文件被放入特定文件夹时执行作业。

我发现一些文章向我展示了如何在 SQL Server 上执行此操作。

我创建了一个警报类型:WMI Event Alert

对于名称空间,它是自动以\\.\root\Microsoft\SqlServer\ServerEvents\MSSQLSERVER 出现的 SQL 实例

在查询部分 - 我写了下面的查询,

SELECT * 
FROM __InstanceCreationEvent 
WITHIN 1 
WHERE TargetInstance ISA 'CIM_DataFile' 
AND TargetInstance.Name = ‘c:\\TestFolder\’ `

返回的错误信息是:


Cannot create new alert. 

ADDITIONAL INFORMATION:

Create failed for Alert 'AlertTest'.  (Microsoft.SqlServer.Smo)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.2425.0+((KJ_PCU_Main).110406-2044+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Create+Alert&LinkId=20476

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

SQLServerAgent 错误:WMI error: 0x80041058

@wmi_query 无法在提供的@wmi_namespace 中执行。验证查询中选择的事件类是否存在于命名空间中,并且查询具有正确的语法。 (Microsoft SQL Server,错误:22022)

如需帮助,请点击:http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.2425&EvtSrc=MSSQLServer&EvtID=22022&LinkId=20476

请您告知我的查询是否正确以及是否还有其他需要检查的地方?

非常感谢。

【问题讨论】:

    标签: sql-server-2008 wmi alert wmi-query


    【解决方案1】:

    您使用了错误的命名空间,CIM_DataFile WMI 类是 \root\CIMV2 命名空间的一部分,而不是 \root\Microsoft\SqlServer\ServerEvents\MSSQLSERVER 的一部分

    【讨论】:

    • 嗨,是的,你的仪式。我使用了下面的查询并得到了这个工作 - 非常感谢 - 命名空间错误 EXEC msdb.dbo.sp_add_alert @name=N'SimpleFolderWatcher', @message_id=0, @severity=0, @enabled=1, @delay_between_responses= 0,@include_event_description_in=0,@category_name=N'[未分类]',@wmi_namespace=N'\\.\root\cimv2',@wmi_query=N'SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA''CIM_DataFile'' AND TargetInstance.Drive = ''C:'' AND TargetInstance.Path=''\\testfolder\\'' AND TargetInstance.Name LIKE ''C:\\%'' ', @job_id=N'0-0- 0' 开始
    【解决方案2】:

    在这种情况下,RRUZ 的回答是正确的。但是,此错误消息还有其他可能的原因:

    @wmi_query 无法在提供的@wmi_namespace 中执行。

    一个可能的原因是运行 Windows 服务“Windows Management Instrumentation”的帐户被禁用为 SQL 登录。 (如果您运行的是 SQL 2012+,请查找登录名“NT SERVICE\winmgmt”)。 (来源:'rahmanagoro'的博客)

    编辑 2020-05-29:我已在 DBA 论坛上对这个问题提出了a more comprehensive answer。 另一种可能的解决方法是重新启动“Windows Management Instrumentation”服务。不知道是什么导致了问题,但重新启动服务可以解决问题。我见过两次,两次都是在 Windows Server 2008 R2 Standard Edition x64 上。

    编辑 2020-05-29:我已在 DBA 论坛上对这个问题提出了a more comprehensive answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      相关资源
      最近更新 更多