0

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

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

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

帮助最受赞赏。谢谢

抱歉,我还不能上传图片,但这里是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”完成:成功。

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

4

3 回答 3

4

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

在此处输入图像描述

于 2015-03-26T10:50:17.137 回答
1

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

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

于 2014-11-12T15:42:04.980 回答
0

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

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

于 2013-04-14T18:42:55.530 回答