检查文件是否存在的脚本任务然后发送电子邮件

问题描述

我有一个简单的 SSIS 包,我想在其中包含一个部分,以确定文件是否存在于文件夹中,并通过电子邮件发送失败或通过电子邮件。我尝试在主要 for 循环部分之后使用脚本任务,并根据成功或失败使用优先约束通过电子邮件发送文件是否存在。每次我运行它时,脚本都会从某个地方获取一个成功标志(文件存在),当文件不存在时。

我在脚本代码中放置了一个消息框输出,以显示文件是否存在变量设置为 False 或 True,结果显示为 False,以及在邮件发送中显示变量值为 false,但正在发送成功的电子邮件

我在我的脚本任务中得到了以下变量,FileExist 是一个布尔变量,在包级别设置为认 false。在我的脚本代码中,我正在检查 xlFileName 是否存在,然后设置一个标志以打印出 Y 或 N

Variables used in Script Task

脚本中的代码如下:

 Public Sub Main()
        Dim fileExists As String
        fileExists = CType(File.Exists(Dts.Variables("User::xlFileName").Value.ToString()),String)
      
        If fileExists = "False" Then
            MessageBox.Show("N")
        Else
            MessageBox.Show("Y")
           
        End If

    End Sub

是否需要根据结果将代码中的 ScriptResult 设置为成功/失败?

Dts.TaskResult = ScriptResults.Success

我之前尝试过,但脚本任务失败了。

在优先约束(设置为评估操作:表达式)中,我也有以下内容,但删除了它们,因为它们没有任何区别,但测试正常。

@[User::FileExists]="False"    - For No File
@[User::FileExists]="True"     - For File Present

我不是 ssis 的普通用户,也没有使用过脚本任务,所以请善待!

谢谢

安德鲁

编辑:下面的先例约束设置图像。我现在已经将这些设置为根据文件是否存在来检查变量的真/假:

Success

Failure

更改变量以填充 True 作为布尔值而不是字符串值,并将任务结果设置为成功/失败。

Public Sub Main()
        Dim fileExists As Boolean
        fileExists = CType(File.Exists(Dts.Variables("User::xlFileName").Value.ToString()),Boolean)
       
        If fileExists = False Then
            Dts.TaskResult = ScriptResults.Failure
            Dts.Variables("User::FileExists").Value = False

        Else
            Dts.TaskResult = ScriptResults.Success
            Dts.Variables("User::FileExists").Value = True
        End If

    End Sub

当我运行脚本并且文件不可用时,脚本任务失败但发送邮件就好像成功一样:

Script firing Result Succcess and Script fail

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)