我可以抑制"对于每个文件枚举器都是空的" SSIS中的警告?

时间:2018-01-25 23:55:09

标签: ssis

我有一个SSIS包(SQL 2016),可以将文件加载到数据库中。

在包的开头,我有一个Foreach循环容器(Foreach文件枚举器)。此循环检查错误文件夹中是否有任何文件。所需条件是错误文件夹中没有文件。

ETL效果很好。但是,当错误文件夹中没有文件时,Foreach循环容器会生成警告:

  

Foreach文件 - 检查错误文件夹:警告:For Each文件   枚举器是空的。 For Each File枚举器未找到任何内容   与文件模式匹配的文件或指定的目录   空。

由于这是期望的情况(没有文件),并且由于我的控制流以任何一种方式处理情况,是否有办法抑制此警告?

想要取消警告的原因是因为程序包上的警告计数始终为1.但是,有时SSIS警告很重要(例如当字段同步时)。我不希望有包装总是有警告,因为它们可以掩盖其他真实的问题。

这听起来像是一件小事,所以我当然认为这是一种方式,但我还没有找到它。我尝试在Foreach循环上设置OnWarning事件处理程序并将Propagate设置为False。但是当程序包运行时,警告仍会被视为警告。

1 个答案:

答案 0 :(得分:2)

我认为解决这个小问题的最佳方法是编写一个非常小的脚本任务。只需将带有文件夹路径的输入变量传递给脚本任务,检查文件计数并返回输出变量,然后使用带表达式的优先约束

Dts.Variables["User::GoFurther"].Value = Directory.GetFiles(Dts.Variables["User::Path"].Value.ToString()).Any();

enter image description here