SSIS中未提交的读取

时间:2010-06-03 17:44:18

标签: ssis integration service

我正在尝试调试一些遗留的Integration Services代码,并且真的想要确认我认为问题是什么:

我们在控制流容器中有一个非常大的数据任务。此控制流容器设置为TransactionOption = supported - 即它将'继承'来自父容器的事务,但没有在此处设置。

在数据流中,有一个对存储过程的调用,该过程使用伪代码写入表:

“如果不存在与这些参数匹配的记录,则将其写入”

现在,问题在于,有三个记录被传递到此proc,所有记录都具有相同的参数,因此逻辑上第一个记录找不到匹配项并创建记录。第二条记录(具有相同的参数)也找不到匹配项并创建另一条记录。

我的理解是,数据流中传递给proc的第一个“记录”是未提交的,因此第二次调用无法“读取”。结果是所有三个记录都创建了一行,而逻辑上只有第一个应该。

在这种情况下我是否正确地认为是未提交的事务会阻止第二次调用看到第一个?即使在容器上设置隔离级别也无济于事,因为它还没有包含在事务中....

希望这是有道理的,并且感激地收到任何建议。解决方法赋予你上帝般的地位。

2 个答案:

答案 0 :(得分:2)

流量是否太大,无法首先通过聚合流所有这些行,以消除重复项?

答案 1 :(得分:0)

如果更改位于同一事务中,则它们应彼此可见。而且我认为SSIS不会为每个语句/ SP调用创建一个事务,所以我认为问题出在其他地方。