我正在编写一个 SSIS 包,它从一个表中读取记录并返回 20 个 SQL Server 名称,接下来的步骤是 foreach 循环,它获取数据库对象并创建该数据库脚本的文件。即使这已经成功完成,但问题是它花费了太多时间,大约是。 3-4 小时即可完成。
包流程是,
- 返回 20 个 SQL 服务器的 SQL 任务 - 执行单个查询
- 第二个是Foreach Loop,它迭代来自一台服务器的所有对象并生成一个存储到某个位置的文件。
问题是,
- 我们可以将时间从3 到 4 小时减少到最短吗?
- 是否可以让foreach循环并行执行?
我正在尝试将一个循环分成三个循环,这样我希望能够将3到4小时减少为1小时>
非常感谢任何建议。
谢谢!
最佳答案
SSIS 中没有内置的并行 foreach 循环功能。这意味着您需要手动编码,在这种情况下有几种方法:
- 向 foreach 循环添加约 20 个任务,每个任务基于不同的变量进行处理。这可以使用 BIML 生成,以使其更容易创建且更加一致
- 创建一个执行子包 N 次的脚本任务。网络上有许多 .net 并行执行的示例。
米
关于sql-server - SSIS并行处理foreach循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37542375/