SSIS脚本组件 - 仅用于更改变量

时间:2014-09-07 12:58:03

标签: sql sql-server ssis

我有一系列非常相似的任务:

选择a,b FROM c
在另一个表中查找并更改列b中的值。 将新值保存回c,如果不匹配,则将结果发送到错误表。

这部分非常简单,并在此处说明:

Source ==> Lookup =match=> SQL Update command
           =No match=> SQL Save Error command

(希望你理解我的意思 - 但它有效!)

我现在必须多次重复这一点,我的source-sql会发生变化。所以我想要做的是在Source前面插入一个Script Component并设置我的User :: Sql变量,如:

Variables.Sql = "SELECT d, e FROM f"

以上所有内容都包含在数据流中。当我创建了一个时,我可以复制那个,只更改脚本中的Sql变量,然后它应该全部工作。

我的问题是:当我插入脚本命令时,它会询问我是否是Source,Destination或Transscript脚本。并且通过仅设置变量,它不会产生任何输出行,也无法连接到我的源。

任何人都知道如何做到这一点?

(我已经简化了上面的内容。我实际上想要更新多个变量并在我的Source,Lookup和Error更新中使用它们 - 因此只更改初始Source中的SQL脚本并不简单!但是能够做到这一点,我将能够实现我想要的: - ))

1 个答案:

答案 0 :(得分:4)

在执行数据流之前,应该在控制流中设置包含SQL查询的变量。

然后,您需要将该变量用作数据流中的表达式。您可以参数化查找中使用的查询或数据流的任何其他参数。

如果您的数据流实际上始终具有相同的结构,您甚至可以生成查询列表并在循环中调用数据流任务,从而防止重复执行相同的任务。