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
SSIS表达式设置两个变量_Ssis_Expression_Bids_Sql Server Data Tools_Ssis 2012 - Fatal编程技术网

SSIS表达式设置两个变量

SSIS表达式设置两个变量,ssis,expression,bids,sql-server-data-tools,ssis-2012,Ssis,Expression,Bids,Sql Server Data Tools,Ssis 2012,我试图在SSIS中使用“表达式任务”来简单地初始化/设置两个变量。这个看似简单的任务让我发疯,因为我不知道如何区分这些语句: @[User::testVariable]="1" @[User::testVar2]=3 这就产生了一个解析错误,我已经阅读了大量的文档,但都没有用。语句是如何分开的,我希望我不必使用多个表达式任务,因为我有很多变量。。。谢谢您一次只能设置一个变量: 要在运行时更改变量的值,需要 表达式或脚本任务。这个表达方式不是很灵活,也不是很简单 脚本任务需要.Net知识。这

我试图在SSIS中使用“表达式任务”来简单地初始化/设置两个变量。这个看似简单的任务让我发疯,因为我不知道如何区分这些语句:

@[User::testVariable]="1"  
@[User::testVar2]=3

这就产生了一个解析错误,我已经阅读了大量的文档,但都没有用。语句是如何分开的,我希望我不必使用多个表达式任务,因为我有很多变量。。。谢谢

您一次只能设置一个变量:

要在运行时更改变量的值,需要 表达式或脚本任务。这个表达方式不是很灵活,也不是很简单 脚本任务需要.Net知识。这就是微软的原因 在SSIS 2012中介绍了表达式任务。它使您能够设置 运行时一个变量的值缺点是它不是 适用于2008年,一次只能设置一个变量


您必须下载链接上提供的自定义
多表达式任务
组件,或对每个变量执行
表达式任务。

我最近开始做的一些事情,可能对人们有帮助:

我意识到,通常可以使用执行SQL任务来完成任务,而不必费心设置多个表达式任务或脚本任务。所需的SQL可能会因连接到哪个数据库而有所不同,我的示例基于SQL Server

我的示例基于从参数初始化变量,但这可以根据不同的情况进行调整

步骤1

创建一个在中接受参数的查询-这些是您需要从中获取值的参数或变量。当然,您可以使用它将变量初始化为0,或者对几个参数或变量执行一些算术运算

结果集选项使用单行选项

步骤2

像往常一样设置参数映射

步骤3

设置您的结果集


我想这样做的缺点是,您要连接到一个数据库来完成这项工作—但是如果您安装了SSI,那么该服务器上就有一个SQL Server实例—所以我不确定这是否是一个很大的缺点


我发现这比设置脚本任务要简单得多,但是YMMV。

如果需要设置很多变量,我会使用脚本任务。感谢您的评论:但它们不是一回事。对于脚本任务,您没有参数化任务的选项,因此它是静态的。我正在将变量分配给参数,因此我需要能够在SSIS级别对其进行调整。不确定“任务参数化”是什么意思……你的意思是你不能执行他们在本论坛中告诉你的操作吗?回答:该死,哈哈,你毕竟可以在脚本任务中设置参数!(我是在简要阅读的基础上猜出来的)。您是否愿意分享一行代码,告诉我们如何编写一个语句,将VariableA的值设置为ParameterA???如果您愿意,可以添加它作为答案。我自己从来没有这样做过,但是从我提到的链接来看,它看起来应该是:
Dts.Variables(“User::VariableA”).Value=Dts.Variables($Project::ParameterA”).Value
我真不敢相信我花了这么长时间才选择了这个最佳答案——尽管它对我和其他很多人都有帮助。真有趣,在我从一位顾问那里学到这个的第二天,你居然提出了这个建议!我证明这种方法是有效的,但我不确定它是否比其他方法更有效。非常感谢你给出了答案