【问题标题】:SSIS control flow stops after sql taskSSIS 控制流在 sql 任务后停止
【发布时间】:2013-04-11 15:46:01
【问题描述】:

我有一个带有脚本任务的控制流,它检查文件是否存在,如果它存在,那么它会移动到数据流任务。如果未找到,则执行 SQL 任务,将详细信息写入错误日志,之后它应移至下一个文件进行检查。不幸的是,它在更新后停止在 SQL 任务上。

我尝试在 SQL 任务之后更改约束,但没有成功。

尽管搜索找不到答案!!!

帮助最感激。 谢谢

抱歉,我还不能上传图片,但这里有一个 link 用于 SkyDrive 上的图片。

我对每个脚本任务都有一个约束,它基本上检查一个包含文件名的变量,如果找到则运行数据流,如果没有则写入错误。这是一个更大的循环的一部分,该循环查找包含自上次处理以来的时间戳的文件。

虽然我注意到即使第一个文件在那里,控制流在数据流之后停止,但现在我很困惑!!!!!!

谢谢

日志:

SSIS 包“P76import.dtsx”启动。 信息:进程 P76 调整文件中的 0x4004300A,SSIS.Pipeline:验证阶段开始。 信息:进程 P76 调整文件中的 0x40043006,SSIS.Pipeline:准备执行阶段开始。 信息:进程 P76 调整文件中的 0x40043007,SSIS.Pipeline:预执行阶段开始。 信息:进程 P76 调整文件中的 0x402090DC,P76 调整文件 [368]:文件“C:\Mark\P76\ImportFiles\P76_ADJUSTMENTS_20130408.csv”的处理已开始。 信息:进程 P76 调整文件中的 0x400490F4,查找 [438]:组件“查找”(438) 已缓存 4 行。 信息:进程 P76 调整文件中的 0x400490F5,查找 [438]:组件“查找”(438) 已缓存总共 4 行。 信息:进程 P76 调整文件中的 0x402090E2,查找 [438]:组件“查找”(438) 在缓存中处理了 4 行。处理时间为 0.015 秒。缓存使用了 4208 字节的内存。 信息:进程 P76 调整文件中的 0x4004300C,SSIS.Pipeline:执行阶段开始。 信息:进程 P76 调整文件中的 0x402090DE,P76 调整文件 [368]:为文件“C:\Mark\P76\ImportFiles\P76_ADJUSTMENTS_20130408.csv”处理的数据行总数为 1486。 信息:进程 P76 调整文件中的 0x402090DF,错误表 [176] 中的无效行:“组件“错误表中的无效行”(176)中的数据插入的最终提交已开始。 信息:进程 P76 调整文件中的 0x402090E0,错误表 [176] 中的无效行:“组件“错误表中的无效行”(176)中的数据插入的最终提交已结束。 信息:进程 P76 调整文件中的 0x402090DF,事务表 [411]:“组件“事务表”(411)”中数据插入的最终提交已开始。 信息:进程 P76 调整文件中的 0x402090E0,事务表 [411]:“组件“事务表”(411)”中数据插入的最终提交已结束。 信息:进程 P76 调整文件中的 0x40043008,SSIS.Pipeline:后执行阶段开始。 信息:进程 P76 调整文件中的 0x402090DD,P76 调整文件 [368]:文件“C:\Mark\P76\ImportFiles\P76_ADJUSTMENTS_20130408.csv”的处理已结束。 信息:进程 P76 调整文件中的 0x4004300B,SSIS.Pipeline:“组件“错误表的无效行”(176)“写入 0 行。 信息:进程 P76 调整文件中的 0x4004300B,SSIS.Pipeline:“组件“事务表”(411)”写入了 1485 行。 信息:进程 P76 调整文件中的 0x40043009,SSIS.Pipeline:清理阶段开始。 SSIS 包“P76import.dtsx”完成:成功。

已回答 - 通过评论 问题是进入“检查是否有文件”脚本任务的约束都没有设置为真!!

【问题讨论】:

  • 你有你的 SSIS 包的图像吗?你是如何配置“For Each Loop”的?
  • @Lamak - 不确定上次编辑发生了什么,这里是图片链接,因为还不能发布图片sdrv.ms/17teFHB。序列容器中有 4 个不同的文件,根据时间戳,其中任何一个都可能不可用。
  • 在更新后停止 SQL 任务”是什么意思?
  • @Lamak 简单说流程完成:(
  • 如果实际执行的最后一个任务有多个约束,请确保在每个约束上选择“逻辑或。一个约束必须评估为真”。

标签: sql-server ssis


【解决方案1】:

如果您进行流程 OR 而不是 AND,它将起作用。 目前,这两个组件都必须评估为真。 如果任何组件评估为真,则 OR 将起作用。 右键单击流并根据图像进行编辑。

【讨论】:

  • 只是想说这个答案救了我....我的用例完全错过了它,谢谢 Maxui。
【解决方案2】:

“在 P76 调整文件之后”双击绿色链接,您将在选择第二个单选按钮中获得“优先约束编辑器”,即“逻辑或。一旦约束必须评估为真”,来自“多重约束”框架;你的问题会得到解决的。

对剩余的东西做同样的改变......

【讨论】:

    【解决方案3】:

    您的问题是,您在控制流中有两条通向同一任务的路径,而这根本行不通。

    您可以设置一个变量,例如 fileABCfound,根据是否找到文件设置 true 或 false。然后在流程步骤中,转到属性并为 Disbale 设置一个表达式,如果变量为 false,它将禁用任务。这样做而不是将表达式放在连接器中。这样,如果找不到文件,它将禁用任务并移至下一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 2017-05-27
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      相关资源
      最近更新 更多