我的来源 - Oracle;目标 - SQL Server
要求 - 我必须从目标服务器获取empid并将相同的empid传递给oracle并获取数据
方法,我正在使用...我正在构建一个字符串(逗号分隔)包含empid的-1,2,3,... 10000 . 字符串10000的长度(将来可能会增加) . 如何将此字符串传递给oracle和变量中的数据流任务 . 这意味着,在DFT中,我从这样的变量中选择这个字符串......“select * from emp where empid in”@ [user :: empid]“
CHallenge - 我看到表达式限制为4000.如何再次向数据流任务4000发送4000次 . 我无法使用合并,查找或forloop,因为它会达到性能 . 我也在这里贴了......
1 回答
在2012版SQL Server Integration Services中删除的4k limit仅适用于表达式 .
因此,如果您必须通过将所有这些用户ID连接在一起来构建源查询,那么您必须沿着当前行进的路线走下去,停止使用表达式并在脚本任务中执行字符串连接 .
代码近似
POC
我创建了一个简单的包 . 连接到数据流的脚本任务,其变量定义为
QuerySource
,并使用以下逻辑构建一个长字符串,然后将对表进行查询 .执行时,这里是一个屏幕截图,显示变量/查询中超过4k个字符 .
在我的数据流中,我使用“来自变量的SQL命令”,因为我们正在使用变量,这是唯一有意义的事情......