2011-12-02 65 views
1

我已经按照这个和其他站点上的建议来检查是否存在使用脚本任务的文件。如果文件不存在,只要我不想执行一些不同的处理,代码就可以完美工作(只在文件存在时才运行步骤)。当我尝试在文件不存在时转移到其他处理时,该分支从不执行,并且程序包成功完成,而不运行“文件不存在”分支中的步骤。这是这个软件包的功能。当文件不存在时SSIS脚本任务不分支

  1. 看看头文件是否存在。如果是,则转到步骤2。如果不是,则转到步骤4
  2. 进程中的头文件
  3. 删除头文件
  4. 看到,如果一个详细的文件存在。如果是,则转到步骤5.如果没有,停止处理
  5. 过程的详细文件
  6. 删除详细文件

包变量:

blnFileExists:布尔,默认为false

strListIndexFileFullPath:字符串,表达式基于其他字符串变量设置文件名和文件路径

脚本任务

属性:FailPackageOnFailure:假,FailParentOnFailure:假的 “文件存在” 约束>评估操作

Imports System.IO 
Public Sub Main() 
    Dts.Variables("blnFileExists").Value = File.Exists(Dts.Variables("strListIndexFileFullPath").Value) 
    Dts.TaskResult = ScriptResults.Success 
End Sub 

属性:表达式和约束,值:成功,表达式:@ blnFileExists = = True,使用逻辑与

“文件不存在”的属性约束>评估操作:表达式和约束,值:成功,表达式:@ blnFileExists == False,使用逻辑AND

回答

3

在优先约束编辑器中,您需要将Logical AND更改为逻辑或

在你的情况下,要在blnFileExists路径时blnFileExists包拿一个路径。 (Notice the OR in the sentence)如果将约束条件设置为Logical AND,那么该包将期望两个表达式都成功。在这种情况下不可能,因为变量blnFileExists只能有truefalsenot both

话虽如此,你实际上不需要使用Script Task来检查文件是否存在。你可以使用File System Task来做同样的事情。

请在下面的链接中查看我的答案,看看如何使用文件系统任务来检查文件是否存在。当你使用File System Task时,你不需要编写任何C#代码或者在优先约束中使用表达式。

Branching after a file system task in SSIS without failing the package

希望有所帮助。

+0

Siva - 非常感谢你。逻辑或是答案。很明显,你已经指出了。也感谢您参考您的其他解决方案 - 我实际上已经发现并试图使用,但我仍然在使用逻辑与,这就解释了为什么我无法让您的解决方案发挥作用。 – user1078196

相关问题