【问题标题】:SSIS Expressions setting two variablesSSIS 表达式设置两个变量
【发布时间】:2015-06-12 16:41:18
【问题描述】:

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

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

这会导致解析错误,我已经阅读了很多文档,但无济于事。语句是如何分隔的,我希望我不必使用多个表达式任务,因为我有很多变量...谢谢

【问题讨论】:

  • 如果你需要设置很多变量,我会使用脚本任务。
  • 感谢您的评论:但它们不是一回事。对于脚本任务,您没有参数化任务的选项,因此它是静态的。我正在将变量分配给参数,因此我需要能够在 SSIS 级别对其进行调整。
  • 不确定你所说的“参数化任务”是什么意思......你的意思是你不能按照他们在这个论坛答案中告诉你的去做吗?:social.msdn.microsoft.com/forums/sqlserver/en-US/…
  • 该死,大声笑,毕竟你可以在脚本任务中设置参数! (我猜测基于简要阅读)。您是否愿意分享一个关于如何编写将 VariableA 设置为 ParameterA 中的值的语句?如果您愿意,可以将其添加为答案
  • 好吧,我自己从来没有做过,但从我提到的链接来看,它看起来会是:Dts.Variables("User::VariableA").Value = Dts.Variables("$Project::ParameterA").Value

标签: ssis expression bids sql-server-data-tools ssis-2012


【解决方案1】:

一次只能设置 1 个变量:

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

http://microsoft-ssis.blogspot.com/2013/07/custom-ssis-component-multiple.html

您必须下载链接上提供的自定义Multiple Expressions Task 组件,或者为每个变量执行Expression Task

【讨论】:

  • 我不敢相信我花了这么长时间才选择这个最佳答案 - 尽管它对我和其他许多人都有帮助。
【解决方案2】:

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

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

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

第 1 步

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

结果集选项使用单行选项。

第 2 步

照常设置参数映射。

第 3 步

设置您的结果集。


我想这样做的缺点是您要连接到数据库来执行此操作 - 但如果您安装了 SSIS,那么您在该服务器上有一个 SQL Server 实例 - 所以我不确定它是否是一个缺点。

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

【讨论】:

  • 有趣的是,在我从顾问那里得知这一点后的第二天,你竟然提出了这个建议!我证明这种方法有效,但我不确定它是否比其他方法效率更高/更低。非常感谢您提出答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-30
  • 1970-01-01
相关资源
最近更新 更多