首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSIS合并连接任务与选项完全外部连接不阻塞

SSIS合并连接任务与选项完全外部连接不阻塞
EN

Stack Overflow用户
提问于 2014-01-23 14:52:57
回答 1查看 3.1K关注 0票数 2

我正在处理一个SSIS包,其中包含一个合并连接。

我从两个不同的DB加载,从一个源转换数据并让它流到合并联接任务中。

在合并联接任务之后,我使用条件拆分将数据拆分为新建、删除和现有记录。

在拆分之后,我流到一个insert任务和两个OLE DB命令,更新和删除过时的和更新更改的记录。

当合并联接具有内部联接选项时,只要需要从两个DB加载所有数据,它就会阻塞。

当合并联接有完全外部连接或左外部连接选项时,它不会阻塞,直到从两个DB加载所有数据。

我需要合并联接任务上的完全外部联接选项,以便在之后将数据拆分到新记录和延迟记录中。如果我使用内部连接,我只需处理现有的和更新的数据。

当合并联接没有阻塞时,我会在事务中得到一个错误,因为当加载仍然在处理并且试图插入或更新记录时,事务失败。

我的问题是,如果有人能解释我为什么会这样,合并连接不会阻止外部连接,如果有人已经面临这样的问题,他是如何解决的?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-23 17:04:46

避免事务阻塞错误的最简单方法是为输出数据提供一个暂存表,而不是条件拆分。在这里,你可以兼得这两个世界的优势:

  • 最大同步数据流通过合并连接到您的暂存表中
  • 避免那些烦人的OLE DB命令,取而代之的是一个很好的批处理更新连接/删除连接语句,将您的暂存表连接回您的源。

此外,您也不正确,内部连接和外部连接都只是部分“阻塞”,即异步,但是当您有一个外部连接(特别是当您有一个完全的外部连接时),更多的行更快地传递到输出缓冲区,因为条件限制较小。

想象一下,你有两堆101张卡片,每个卡片上都印着不同的坏情节洞,按照增加的不信任度排序,还有一个“匹配”卡片的发件箱。因为它们是脆弱的小卡片,当你把它们分类时,你把它们都钉在一起,试图移除它们会导致它们在地板上毫无价值地散落,就像许多破碎的冰毒大王梦一样。

我们还可以说,每次你“匹配”10张卡片(或者当你没有牌可处理时),一个绿色的小矮人就会进来,把这些卡片拿出来,在其他地方进行进一步的处理。现在,让我们再加一句:一堆中只有一支火柴,这是最后一张牌(为什么他一开始就离开了灰点?)

在你处理最后两张卡片之前,有多少小绿侏儒会来看你?

  • 内连接- .还没有火柴!
  • 左外接- 10。A堆中的所有其他卡片都在继续(100),所以你已经处理了10套10张卡片。
  • 完全外联- 20。所有其他卡片从桩A和桩B (200)继续进行。那是20套10张牌。

更重要的是,对于你的问题,在一个内部连接,第一个绿色小侏儒尽职尽责地等待,直到你完成了堆,然后再拿他的一个卑劣的匹配在其他地方。在第五次比较之后,第一个绿色的小侏儒开始了.哦不!事实证明,进一步处理的部分原因是他需要换掉你堆里的一些卡片。(如果你仔细看的话,总会发现更多的情节漏洞.)但是主食!你告诉他不,这是一场混战,指控被起诉,现在你在圣昆廷和一个让你想起瘦子皮特的家伙进行3比5的比赛。

但是如果你告诉那个绿色的小矮人,“把新的卡片放在那里,我们会在一次猛扑中得到所有这些变化”,一切都会变得更加顺利。

所以使用一个分期表。不再阻塞,更新更快,问题得到解决。除了那些破了的坏阴谋洞。它们会持续到永远。哦,好吧!

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21311562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档