sql-server - SSIS并行处理foreach循环

标签 sql-server foreach ssis parallel.foreach

我正在编写一个 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/

相关文章:

sql-server - 在 SQL Server 中将多列转变成行?

sql-server - 在 SQL Server 2008 中使用 ADO 时出现 "Multiple-step operation generated errors. Check each status value."错误

c# - 用于列出从 .NET 代码访问数据库的工具

java - Android + SQL Server + jTDS

javascript - 如何获取相同类名的每个值?

SSIS 查找转换在日期列上失败

sql-server - SSIS - 计算期初和期末余额

csv - 如何使用Powershell查看CSV文件的特定行号中的数据

php - 使用 PHP foreach 构建样式表

database - 如何在 Dart (Flutter) 中获取每个可迭代值的索引号