1

我有一个 SSIS 项目,我想在其中将我的包变量之一设置为我的一个数据库表中某个列的最大值。假设包变量名为 var。

我的 SQL 看起来像:

SET var = (SELECT max(some_column) from SomeTable)

这如何适合 SSIS 控制流/数据流?该 SQL 将执行什么类型的任务?我什至可以通过 SQL 访问包变量吗?

4

1 回答 1

4

您可以使用执行 Sql 任务来完成此操作。语法将根据您使用的数据库连接类型(OleDb 或 .Net)而有所不同。

如果您使用的是 OleDb 连接管理器,您的 sql 语句将如下所示:

SELECT ? = MAX(some_column) FROM some_table

然后选择参数映射选项卡来映射您的参数/变量。从“变量名称”字段的下拉列表中选择您的包变量。将方向设置为输出并将参数名称设置为 0。(OleDb 连接上的变量从 0 开始按顺序映射)

如果您使用的是 .Net 连接管理器,则可以使用更熟悉的 @variableName 作为 sql 语句中的参数占位符,以及 Execute SQL 任务中的参数名称。

编辑:回应您的评论。查看直接从我的一个项目中提取的一些屏幕截图。请比较您正在做的事情,以确保我们在同一页面上。

在这个镜头中,注意 Execute Sql Task 的连接类型,并注意 Sql 语句的最后一条语句,在该语句中我选择了一个等于 sql 函数的参数。

SSIS 示例 1

在下一个镜头中,看看我是如何配置第二个参数的,确保将参数方向设置为输出。该参数命名为 1,因为它是 sql 语句中的第二个参数/参数持有者。 SSIS 示例 2

于 2013-01-12T04:58:49.250 回答