当前位置:  开发笔记 > 运维 > 正文

在SSIS中的文件系统任务之后进行分支而不会使程序包失败

如何解决《在SSIS中的文件系统任务之后进行分支而不会使程序包失败》经验,为你挑选了1个好方法。

如果文件系统任务(例如重命名)失败,例如文件不存在,则SSIS将其视为错误.这意味着整个包失败了.我可以通过使用脚本任务或将包的最大错误设置为多个来解决问题.将程序包的最大错误设置为多个错误的问题是,如果程序包中的其他位置发生错误,程序包将不会失败.

那么有没有办法以某种方式吞下错误,仍然能够根据文件系统任务的成功或失败进行分支?我尝试将文件任务粘贴到ForceExecutionResult设置为Success的序列容器中,但是程序包仍然无法说达到最大错误计数.



1> 小智..:

这是一个可能的选择.您可以通过Precedence Constraint将文件系统任务更改为后来实现问题中提到的要求Completion.以下示例显示了如何完成此操作.该示例是使用创建的,SSIS 2008 R2但也适用于以前的版本.

分步过程:

    创建一个SSIS包并创建两个变量,如屏幕截图#1所示.将一些不存在的文件路径值分配给变量.

    在包的控制流选项卡上,放置文件系统任务,脚本任务和数据流任务,如屏幕截图#2所示.脚本任务和数据流任务在这里是假的,并且任务未配置为执行任何操作.

    配置文件系统任务,如屏幕截图#3所示.

    屏幕截图#4显示了程序包执行,并且正如预期的那样,文件系统任务失败,因为文件路径不存在.此外,由于错误,程序包在文件系统任务之后停止执行任务.

    右键单击和之间的优先约束箭头File System Task,Script Task然后选择完成,如屏幕截图#5所示.箭头应从绿色变为蓝色.

    屏幕截图#6显示了优先约束更改后的包执行.文件系统任务仍然失败,但其他任务继续执行.Earlier,条件是只有在文件系统任务成功时才执行脚本任务.Now,条件是在文件系统任务完成其执行后执行脚本任务(无论成功或失败).

    如果您希望包装根据成功/失败完全采用两种不同的路径.您可以执行此操作,如屏幕截图#7和#8所示.红色箭头表示将在文件系统任务失败时执行路径,绿色箭头表示将在成功执行文件系统任务时执行路径.我C:\temp\Source.txt在截屏#7中显示的包执行之前在路径中创建了一个文件.程序包执行后,文件被重命名,路径不再存在.因此,程序包失败,如屏幕截图#8所示.

希望有所帮助.

截图#1:

1

截图#2:

2

截图#3:

3

截图#4:

4

截图#5:

五

截图#6:

6

截图#7:

7

截图#8:

8

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有