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

标签 sql sql-server ssis

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

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

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

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

(希望你明白我的意思 - 但它有效!)

我现在必须重复多次,其中我的 source-sql 发生了变化。所以我想做的是在源代码前面插入一个脚本组件,并将我的 User::Sql 变量设置为:

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

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

我的问题是:当我插入脚本命令时,它会询问我它是源脚本、目标脚本还是转录脚本。并且仅通过设置变量,它不会产生任何输出行,也无法连接到我的源。

有人知道怎么做吗?

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

最佳答案

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

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

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

关于sql - SSIS 脚本组件 - 仅用于更改变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25710423/

相关文章:

mysql - 在 MySQL 中更新了错误的值

sql - 根据列将一行拆分为 2 行或更多行

mysql - 同时按两列排序 SQL

ssis - RetainSameConnection-使用与否?

MySQL innodb 外键

mysql - 如何获得一列的总和?

MySQL 到 PostgreSQL 的 to_tsvector、@@ 和 to_tsquery?

sql-server - 使用 SQL Server 从同名的 XML 节点中获取所有数据

sql-server-2008 - 比较SQL Server中的日期字段

SSIS,在脚本任务中输出空作为列值