如何在不指定结果集的情况下在SSIS中运行动态SQL?

问题描述 投票:0回答:0

我正在 SSIS 中开发 ETL 解决方案。但是,我对使用 Visual Studio 的 SSIS 工具箱执行动态 SQL 的方式有疑问。 我有一个数据流,在比较两个表中加载的数据(Stage Vs Dw_bi)后,添加或编辑行和列,使信息 100% 匹配。

我必须加载的数据,有许多列是固定的,它们不会改变,但还有另一部分列可能会随着时间而改变。从这个意义上讲,插入到中的列不会总是相同的。为了尽可能自动执行此任务,我使用动态 SQL 创建了一个查询,该查询从名为参数的表中提取与变化的列部分相对应的那些列,以构建仅采用必要列的动态查询。当我在 SQL Management Studio 中运行这段代码时,运行没有任何问题并正确执行。但是,当我尝试将相同的代码放入 SSIS 的 OLEDB COMMAND 任务中时,出现以下错误:

ERROR SSIS

代码使用@SQL等变量语句创建为字符串,然后用EXEC子句sp_executesql @sql执行。此外,有必要使用定义的参数?在查询运行时获取,使代码更加动态。例如,这使得结果具有不同的列数和不同的类型。

所以,我想弄清楚如何在 SSIS 中运行动态代码,而无需使用

WITH RESULT SETS()
子句定义结果集。也就是说,结果集,就像在管理工作室中发生的那样,应该采用与查询数据相同的结构,而不需要在带有结果集子句的结构中显式。

我正在尝试弄清楚如何在 SSIS 中运行动态代码,而无需使用 WITH RESULT SETS() 子句定义结果集。也就是说,结果集,就像在管理工作室中发生的那样,应该采用与查询数据相同的结构,而不需要在带有结果集子句的结构中显式。

sql sql-server tsql ssis oledbcommand
© www.soinside.com 2019 - 2024. All rights reserved.