我正在运行动态查询,最初通常会返回 HUGE (300MB - 1GB) 结果集。后来,它不应该这么大(虽然不确定),因为我将使用增量加载。然后将这些结果集加载到 C# 数据表中。脚本循环遍历这些行,然后生成查询(存储在 SSIS 变量中)以将它们加载到适当的目标列(由其他脚本确定)。
对于小型结果集,我的包运行正常。但是,对于大的,它只是由于内存不足错误而失败。我该如何解决这个问题?你能提出一些策略吗?我想我可以一次获取较小部分的数据,然后加载到目标中。不知道该怎么做。有这个食谱吗?
简要介绍该过程的工作原理 -
Execute SQL: Get big ResultSet > Script:RowReader: Read each row
and generate a String SQL like "Insert INTO TableABC VALUES" + {all
columns of 1 row here}. Then, concatenate SQL to a String destinationInsert >
Execute SQL: execute SQL inside String destinationInsert.
ETL 过程完成。这有帮助吗?