如何检索SSIS流程任务的标准输出和错误

时间:2018-02-20 09:27:28

标签: c# ssis

上下文: 我有一个SSIS包,通过执行流程任务调用C#控制台应用程序。

enter image description here

C#程序使用Console.Write("xxx");Console.Error.Write("yyyy");来判断它是否正常工作。

static void Main(string[] args)
        {
            try
            {
                //do stuff
                Console.Write("xxx");
            }
            catch (Exception e)
            {
                Console.Error.Write("yyyy");
            }
        }

我的问题: 如何在ssis中捕获流程任务的输出?

我尝试了什么:

在流程任务表达式中使用控制流中的局部变量设置StandardOutputVariable和StandardErrorVariable。

enter image description here

当我定义String变量时,在完成流程任务后两者都为空。 当我定义了Object变量时,我尝试运行一个脚本任务并将Value转换为String数组,但它会抛出一个无效的强制转换异常。

我缺少什么? 我无法修改真正的C#程序来改变它的记录方式。

由于

1 个答案:

答案 0 :(得分:0)

我通过实验找到了解决方案。

好的,我缺少的是standardErrorVariable的表达式值如何工作。

当我用变量填充standardErrorVariable表达式值时,行为是:

<强> use the value of @[User::l_output] as a variable name to use for standardOutput.

不是: use this variable to capture the output

所以我有两个解决方案来捕获我的过程的输出:

  1. 直接在流程任务配置中使用@[User::l_output](不在espression选项卡中)
  2. 使用StandardOutputVariable表达式中的@[User::l_output]变量,并将我的变量值设置为我之前声明的变量的另一个名称。 enter image description here