Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SSIS中的条件执行SQL任务_Sql Server_Ssis_Etl_Sql Server Data Tools - Fatal编程技术网

Sql server SSIS中的条件执行SQL任务

Sql server SSIS中的条件执行SQL任务,sql-server,ssis,etl,sql-server-data-tools,Sql Server,Ssis,Etl,Sql Server Data Tools,我的SSIS包中有一个executeSQL任务,只有当某个条件为真时,它才应该执行SQL存储过程 我有一个用户变量[user::run],它在包启动时获取一个值。在我的SQL任务中,我有以下代码: declare @run varchar(1) set @run = '" + @[User::run] + "' if @run = 'Y' begin EXEC sp_procedure() end 但是,存储过程永远不会执行。非常感谢您提供的任何帮助或建议。如果您不动态设置[User::run

我的SSIS包中有一个
executeSQL任务
,只有当某个条件为真时,它才应该执行SQL存储过程

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

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

但是,存储过程永远不会执行。非常感谢您提供的任何帮助或建议。

如果您不动态设置[User::run]变量,而是手动设置该变量,该怎么办。那么它执行程序了吗?如果是,您知道设置变量有问题,如果不是,则您知道这与任务有关

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

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

下面是另一个连接器也将设置为的内容,它将流向另一个任务,一个将结束ssis包的任务

刚刚设置好

@run = @[User::run]

不要添加双引号。

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

打开
执行SQL任务
,转到
表达式
选项卡,将表达式添加到
SqlStatementSource

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

“您可以使用表达式将参数值连接到查询字符串中,并设置任务的SqlStatementSource属性。”

谢谢Hadi。成功了。