如果存储过程失败,则在执行 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 变量中的主要内容,如果未能解决你的问题,请参考以下文章