SSIS使用for循环容器不执行脚本任务和数据流任务

SSIS Using For Loop Container Not Executing Script Task and Data Flow Tasks

我正在与专家联系,因为我在最近的项目中遇到了困难。我创建了一个 SSIS 包 (2008R2),它使用脚本任务来构建 SQL 语句,其中在 SQL 语句中使用变量 (@month1) 来指定月份回顾一下会员 table。我还想使用 @month1 变量作为循环容器的 "counter" 来指定执行查询的次数。 SQL 查询附加到数据流任务以将这些记录附加到 SQL 服务器数据库上的 table。脚本任务和数据流任务在 for 循环容器之外工作,初始值为 @month1 变量,但我不知道如何让 for 循环容器更新 @month1 "counter" 变量,以便 for each 循环可以将其用作 "counter" 并且 SQL 语句可以将其用作创建的 SQL 语句中的条件。任何人对如何做到这一点有任何想法或例子吗?

** 更新 ** For Loop 容器是问题所在。脚本任务和数据流任务在 For 循环容器之外工作。它将使用@month1 的初始变量设置并创建动态 sql 脚本,执行脚本并将数据从源数据库服务器传输到目标源服务器。问题是当我将这些步骤放在 For Loop 容器中时,容器会执行并变为绿色,但不会调用其中的步骤。这就是为什么我认为容器没有读取变量@month1,即使该变量是在包级别设置的。有什么想法吗?

首先尝试将数据流Delay Validation属性设置为True。如果它仍然不起作用,而不是在 OLEDB 源中使用表达式将变量作为参数传递:

  1. 创建一个字符串类型的变量。
  2. 将其 EvaluateAsExpression 属性 更改为 True
  3. 设置类似于以下的表达式:

    "select * from table 
     Where column =" + (dt_str, 50)@[User::month1]
    
  4. 在OLEDB Source select中访问模式为SQL Command from variable和select这个变量。

请注意,month1 变量不会在不同范围内创建两次,单击数据流任务并检查变量面板是否显示其他变量。

感谢大家的回复,但似乎我在这个问题上自欺欺人。在寻找最复杂的问题时,我忽略了最简单和明显的问题。我的 For Loop 没有执行容器内部步骤的原因是因为我将 @month1 的初始值设置为 3(有意)并且想要循环直到它被解析为 -49.在 EvalExpression 设置中,它将评估直到语句为 FALSE...所以我在 @month1 <= -49 中的评估已经是错误的。它必须是 @month1 > -49,所以一旦它下降到 -49,声明就会是错误的。我对自己做的比我应该承认的更多,只见树木不见森林!