上下文: 我有一个SSIS包,通过执行流程任务调用C#控制台应用程序。
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。
当我定义String变量时,在完成流程任务后两者都为空。 当我定义了Object变量时,我尝试运行一个脚本任务并将Value转换为String数组,但它会抛出一个无效的强制转换异常。
我缺少什么? 我无法修改真正的C#程序来改变它的记录方式。
由于
答案 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
所以我有两个解决方案来捕获我的过程的输出: