如果存储过程失败,则在执行 SQL 任务中将输出变量值获取到 ssis 变量中

Posted

技术标签:

【中文标题】如果存储过程失败,则在执行 SQL 任务中将输出变量值获取到 ssis 变量中【英文标题】:If stored procedure failed then Get output variables values into ssis variables in Execute SQL Task 【发布时间】:2020-07-29 14:11:24 【问题描述】:

我正在尝试从 SP 获取输出消息到执行 SQL 任务中的 SSIS 变量中。如果存储过程成功执行,我可以获取消息,但如果存储过程引发错误,则变量保持为空,如下所示-

现在,如果 sp 执行成功完成,那么 ssis 变量就会得到数据, 但如果 sp 执行出错,则 ssis 变量保持为空并且执行 SQL 任务组件失败(这是所需的行为)。 请指导。谢谢!

【问题讨论】:

“但万一存储过程引发错误” 这些错误是什么?为什么要将 SQL 粘贴为图像,IF 1=1 有什么用? 1什么时候等于1 @Larnu,这个sp只是解释问题陈述的一个例子。 SP 引发用户定义的错误,我需要在 ssis 中检索它,然后在我的系统中进一步使用它们。 【参考方案1】:

如果执行 SQL 任务失败,则不会填充输出变量。 最好的选择是更改您的存储过程并将所有代码包装在 try/catch 块中。这样您就可以始终填充变量,如果您收到内部错误,请确保 SSIS 包失败。

如果您在存储过程中使用 RAISERROR,则 SSIS 可用的信息只有带有 RAISERROR 语句的错误消息。您可以通过在 SSIS 中创建 OnError 处理程序来检索此信息,然后它将在系统变量中可用:“System::ErrorDescription”

【讨论】:

以上是关于如果存储过程失败,则在执行 SQL 任务中将输出变量值获取到 ssis 变量中的主要内容,如果未能解决你的问题,请参考以下文章

SSIS 执行 SQL 查询任务找不到存储过程

如何记录SSIS执行SQL任务的输出

在 PL/SQL 存储过程中将表作为参数传递

在其执行存储过程中查找Execute SQL任务组件ID

使用输出参数时执行 SQL 任务出错

用C#写一个windows服务可定时执行sql Service数据库里面的存储过程(带两个参数),急求代码!高手赐教!