我已按照此网站和其他网站上的建议检查文件是否存在使用脚本任务。代码工作正常(仅当文件存在时才运行步骤),只要我不想在文件不存在时进行一些不同的处理。当我尝试分支到不同的处理时,文件不存在,该分支从不执行,并且包成功完成而不运行“文件不存在”分支中的步骤。这是包裹正在做的事情。
包变量:
blnFileExists:Boolean,默认为False
strListIndexFileFullPath:string,基于设置文件名和文件路径的其他字符串变量的表达式
脚本任务
属性:FailPackageOnFailure:False,FailParentOnFailure:False
Imports System.IO
Public Sub Main()
Dts.Variables("blnFileExists").Value = File.Exists(Dts.Variables("strListIndexFileFullPath").Value)
Dts.TaskResult = ScriptResults.Success
End Sub
“文件存在”约束的属性>评估操作:表达和约束,值:成功,表达式:@ blnFileExists == True,使用逻辑AND
“文件不存在”约束的属性>评估操作:表达和约束,值:成功,表达式:@ blnFileExists == False,使用逻辑AND
答案 0 :(得分:3)
在Precedence Constraint Editor中,您需要将Logical AND
更改为逻辑OR 。
在您的方案中,您希望程序包在blnFileExists
值为 true 时采用路径<或> blnFileExists
值为(Notice the OR in the sentence)
时的路径假。 Logical AND
如果将约束设置为blnFileExists
,则包将期望两个表达式都成功。在这种情况下,这是不可能的,因为变量not both
只能有 true 或 false 和Script Task
。
话虽如此,您实际上不需要使用File System Task
来检查文件是否存在。您可以使用File System Task
来执行相同操作。
请在下面的链接中查看我的答案,了解如何使用文件系统任务检查文件是否存在。使用{{1}}时,您不需要编写任何C#代码或在优先约束中使用表达式。
Branching after a file system task in SSIS without failing the package
希望有所帮助。