2015-09-13 128 views
0

几乎两个城市的故事...我有17000行数据作为一对字符串在2列进来。每行总是有5个项目编号和5个项目单元计数(单元计数总是4个字符)。他们必须匹配单位和物品或者它是无效的。我正在试图做的是“逆透视”字符串到各行 - 项目编号和项目单位ssis脚本任务丢失记录

所以这里有一个数据行的例子,两列

  • 记录ID列:0
  • 产品编号列:A001E10 A002E9 A003R20 A001B7 XA917D3
  • 项目单位柱:001800110002000300293

我写了一个C#的Windows应用程序的测试工具来unpivot的数据到个人行,它工作得很好,花花公子。所以它基本上将数据转化为85,000行(5倍17,000)行并将其显示给我,这是我所期望的网格(ID,项目编号和项目单位)。

  • 0 | A001E10 | 0018
  • 0 | A002E9 | 0011
  • 等等...

在我的SSIS的应用程序我添加了一个脚本任务来处理此相同的数据,基本上使用了我的测试工具使用相同的代码。当我运行我的任务时,我可以看到它加载了17,000行,但它只在输出上产生了15,000 +/-,所以显然有些不对。

我在想,我没有正确的脚本任务设置,即使它使用的是我的测试工具使用的相同代码,因为它由于某种原因正在删除记录。

如果我回到自己的任务并给它一个特定的记录ID,它不会在第一遍中得到它,它将处理该ID并生成正确的输出。所以这告诉我记录是可以的,但由于某种原因,它错过了它或者将它放在最初的过程中。也许与缓冲区有关?

+0

你在哪里看到15,00条记录?在BIDS的SSIS交互式窗口中?表中的实际记录数是多少? –

+0

对不起...忘了说BIDS中的哪里...是在脚本任务完成之后。然后,当我查询目标表时,它与脚本任务结果的计数相同 –

+0

您是将数据流中的脚本任务用作转换,还是将其作为常规脚本任务用于控制流? – Vinnie

回答

1

嗯 - 我想通了。

我们有一个序列任务,其中包含大量并行运行的数据流任务。我们依靠引擎来优先处理数据提取并正确加载。但是,这个特定的脚本任务不会由该序列容器内的引擎正确处理。

线索是你可以在整个过程之外运行脚本任务本身,它工作正常。因此,我们将脚本任务从序列任务中拉出,并在序列任务之后自行放置,现在它正确运行。