在 SSIS 中有条件地执行 SQL 任务

Conditional Execute SQL task in SSIS

我的 SSIS 包中有一个 Execute SQL task,它应该仅在特定条件为真时才执行 SQL 存储过程。

我有一个用户变量 [User::run],它在程序包启动时获取一个值。在我的 SQL 任务中,我有以下代码:

declare @run varchar(1)
set @run = '" + @[User::run] + "'
if @run = 'Y'
begin
EXEC sp_procedure()
end

但是,存储过程永远不会执行。任何帮助或建议将不胜感激。

如果不是动态设置 [User::运行] 变量,而是手动设置它会怎么样。那么它是否执行程序?如果是,则您知道设置变量存在问题,如果不是,则您知道这是任务的问题。

您想使用 if 语句来尝试执行该过程是否有特殊原因?我推荐两个优先约束。一个指向作业的结尾,可能是一封电子邮件,说明它已完成并记录所有结果。另一个指向存储过程。

例如,一个优先约束将从您的第一步连接到第二步,第二步是您的 exec t-sql。连接器属性如下所示,以评估变量是否设置正确,然后它将流向您的 T-SQL 任务。

这也是另一个连接器的设置,它将流向另一个任务,一个将结束 ssis 包的任务。

刚设置

@run = @[User::run]

不要加双引号。

这看起来像一个表达式而不是 sql。

打开 Execute SQL Task,转到 Expressions 选项卡,将表达式添加到 SqlStatementSource

"declare @run varchar(1)
set @run = '" + @[User::run] + "'
if @run = 'Y'
begin
EXEC sp_procedure()
end"

"you can use an expression to concatenate the parameter values into the query string and to set the SqlStatementSource property of the task." Read more