【问题标题】:Using the file name to determine if a SSIS package should be executed使用文件名确定是否应执行 SSIS 包
【发布时间】:2019-09-20 17:52:49
【问题描述】:

我必须处理 4 家不同的公司的电子表格。目前,如果我收到一组文件,无论我是否收到文件,SSIS 解决方案都会设置为执行解决方案中的所有包。我想通过查看存储 .xlsx 文件的 Source 目录来改变这种行为。

例如,我有两个公司的文件:A 和 B。文件名将始终采用这种格式,文件名的开头是公司名称。

从那里,我想使用文件名来设置变量(?-不确定这是否是最好的方法)来设置优先约束,只执行与我们收到的公司文件相关的包。

根据屏幕截图,我希望在跳过 C 和 D 的同时执行 A 公司和 B 公司的包,然后继续执行下一个包。

关于如何实现这一目标的建议?

【问题讨论】:

  • 听起来您需要将任务流连接更改为有条件的。另外,为什么你有一个里面什么都没有的 Foreach 循环容器?
  • 主要是因为这是我设想的设置方式,但我不知道该怎么做。我一直在查看关于 SO 的其他帖子以及其他类似任务的处理方式 - 但我知道它不完整并且需要更多,但我现在不知道如何处理。

标签: ssis sql-server-2016


【解决方案1】:

一种方法是为每个公司创建一个布尔变量。

@CompanyA_Recd, @CompanyB_Recd, @CompanyC_Recd, @CompanyD_Recd

您的 foreach 循环将遍历文件,分析每个文件名,如果您收到该公司的文件,则将相应的变量标记为 true。

那么您的优先约束可以只检查该公司的变量。

请注意,根据您执行Final Report Package 所需的逻辑,这意味着您可能需要为每个公司设置两个优先约束。如果变量为真,则进入包,如果变量为假,则直接进入最终包。

【讨论】:

  • 你说的有道理——去看看我能不能实现这个逻辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
相关资源
最近更新 更多