如何将Execute Process Task的输出发送至stdout以获取失败详情?
解决方法
- 给Execute Process Task添加失败触发的优先约束,连接到一个新的Script Task,确保只有Execute Process Task失败时才执行这个Script Task。
- 配置Script Task的ReadOnlyVariables,把存储执行输出的
StandardOutputVariable(比如User::ProcessOutput)添加进去。 - 编辑Script Task的脚本(以C#为例),在Main方法中读取变量内容并输出到stdout:
public void Main() { string errorDetail = Dts.Variables["User::ProcessOutput"].Value.ToString(); Console.WriteLine("执行失败详情:"); Console.WriteLine(errorDetail); Dts.TaskResult = (int)ScriptResults.Success; }
- 若还需要捕获错误输出,可将
StandardErrorVariable也加入ReadOnlyVariables,在脚本中一并输出。
注:如果通过SQL Server Agent运行包,输出内容会保存在作业历史的步骤详情中;直接运行包则会在控制台窗口显示。
内容的提问来源于stack exchange,提问作者Rich Uchytil
相关产品推荐
相关产品推荐

