在 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
我的 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