使用WMI触发SSIS包遇阻:文件创建时无法触发问题求助
SSIS WMI触发器无响应问题解决指南
一、修正WMI查询的核心错误
你的WQL查询存在关键错误:TargetInstance.Drive = 'pr-az-sql01'是错误用法——CIM_DataFile的Drive字段只能填本地盘符(如'D:'),不能填服务器名称。远程服务器的WMI连接需要在WMI连接管理器中指定,而非写入查询语句。
正确的基础查询格式(针对目标服务器本地路径D:\workmax reports\Progressive\):
SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE TargetInstance ISA 'CIM_DataFile' AND TargetInstance.Drive = 'D:' AND TargetInstance.Path = '\\workmax reports\\Progressive\\' AND TargetInstance.FileName LIKE 'Progressive Report Data%' AND TargetInstance.Extension = 'xlsx'
二、远程WMI监控的必配项
因为文件和SQL环境在远程服务器pr-az-sql01,必须完成以下配置:
- 启动目标服务器WMI服务:确保
Winmgmt服务处于运行状态 - 配置WMI权限:
- 在目标服务器上打开
WMI控制(运行wmimgmt.msc) - 右键
WMI控制(本地)→属性→安全标签 - 展开
root\CIMV2,添加运行SSIS包的账号(开发机账号或SQL Agent服务账号),授予启用账户和远程启用权限
- 在目标服务器上打开
- 防火墙放行WMI通信:目标服务器防火墙需开放WMI默认端口(135端口+动态RPC端口,或配置固定RPC端口)
- 正确配置WMI连接管理器:在VS的SSIS包中,新建WMI连接管理器时,指定目标服务器名
pr-az-sql01,选择Windows身份验证(使用拥有上述权限的账号)
三、运行上下文的关键注意事项
- 开发机调试时:你的本地Windows账号必须拥有目标服务器的WMI访问权限,同时能访问目标文件夹(UNC路径或本地映射均可,但映射驱动器仅对当前用户生效)
- 部署后运行时:若包部署到SQL Server,SQL Server Agent服务账号必须具备目标服务器的WMI权限和文件读取权限;不要依赖用户映射的网络驱动器(服务账号无法识别),优先使用UNC路径或目标服务器本地盘符路径
四、调试验证步骤
- 用wbemtest验证WQL有效性:
在目标服务器或开发机上运行wbemtest.exe:- 点击“连接”,输入命名空间
root\CIMV2,远程连接时填写目标服务器名,用有权限的账号登录 - 点击“查询”,输入简化后的WQL语句(先去掉FileName和Extension条件),手动在监控目录创建文件,检查是否能捕获到事件
- 点击“连接”,输入命名空间
- 简化查询逐步排查:先只监控文件夹的所有文件创建,确认能触发后,再逐步添加文件名前缀和扩展名条件
- 检查SSIS任务配置:确保WMI事件观察器任务的“WMI连接管理器”指向远程服务器,“WQL查询”正确,超时时间设置合理,事件处理模式选择“等待事件并响应”
内容的提问来源于stack exchange,提问作者Mark Simmonds
相关产品推荐
相关产品推荐

