Cod*_*lus 2 sql variables ssis
我有一个 SSIS 项目,我想在其中将包变量之一设置为数据库表之一中某些列的最大值。假设包变量名为 var。
我的 SQL 看起来像:
SET var = (SELECT max(some_column) from SomeTable)
Run Code Online (Sandbox Code Playgroud)
这如何适应 SSIS 控制流/数据流?该 SQL 将执行什么类型的任务?我什至可以通过 SQL 访问包变量吗?
您可以使用执行 Sql 任务来完成此任务。语法将根据您使用的数据库连接类型(OleDb 或 .Net)而有所不同。
如果您使用 OleDb 连接管理器,您的 sql 语句将如下所示:
SELECT ? = MAX(some_column) FROM some_table
Run Code Online (Sandbox Code Playgroud)
然后选择“参数映射”选项卡来映射您的参数/变量。从“变量名称”字段的下拉列表中选择您的包变量。将“方向”设置为“输出”并将“参数名称”设置为 0。(OleDb 连接上的变量从 0 开始按顺序映射)
如果您使用的是 .Net 连接管理器,则可以使用更熟悉的 @variableName 作为 sql 语句中的参数占位符,以及执行 SQL 任务中的参数名称。
编辑:回应您的评论。请参阅直接从我的项目之一中提取的一些屏幕截图。请比较您正在做的事情,以确保我们意见一致。
在此镜头中,请注意执行 Sql 任务的连接类型,并注意 Sql 语句的最后一条语句,其中我选择了一个等于 SQL 函数的参数。

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