SSIS流程设计问题:并发执行中变量共享的解决方法?

时间:2017-10-23 14:43:39

标签: concurrency ssis ssms etl

让我们开始说我正处于一个大型ETL项目的初级阶段 - 大约80个数据源,其中有数百万行被转换并加载到(挑剔的)ERP系统中。因此,我可以使用大型流程设计解决方案,以及并发Sequence Container执行中此变量共享问题的潜在解决方案。

在我的示例中,我将三个行计数变量记录到SSMS ErrorLogging表中。我的目的是利用这三个变量来缩小“阶段”的范围。可能正在/可能发生数据丢失的ETL过程。我目前正在一个非常小的测试用例中构建它。以下是三个变量和SSIS测试用例包的图像。

  1. varRowsSource:控制流任务,计算源数据中的行数
  2. varRowsTransformation:数据流任务,用于计算数据流转换后的行数
  3. varRowsDestination:控制流量任务,用于计算写入目标表的行数 - >选择计数(*)。
  4. SSIS TestCase包

    在上图中,您将看到正在使用的序列容器的范围。这些容器同时运行。

    我突出显示了控制流任务,这些任务覆盖了彼此的RowsSource和RowsDestination变量条目,并圈出了向变量添加行的数据流。

    可以看出,如果只有一个数据源,每个容器需要3个变量。我们预计每个包30-50个数据源。我希望避免创建数百个变量。

    SSMS错误日志表

    上面是SSMS中的ErrorLog表的片段,应该有助于可视化变量如何添加或相互覆盖。 Sequence Container CustomerInfoAddress的源数据中有4417行,Sequence Container CustomerTaxInfo的源数据中有4429行。

    从本质上讲,我在并发进程中寻找SSIS中变量共享问题的解决方法,我想避免创建数百个变量。我已经咨询了尽可能多的资源,因为我没有运气就能找到这个问题(包括下面的内容)。我希望这里的某些人可以对流程设计变通方法或任何其他类型的解决方案有所了解。

    social.msdn.microsoft.com/Forums/sqlserver/en-US/bed0d082-6c30-47a5-aaa7-0e132927bfe2/row-count-concurrency?forum=sqlintegrationservices

0 个答案:

没有答案