我有一个数据流任务,该任务将一堆数据从多个源移动到多个目的地。总共约50个。从一个数据库移动到另一个数据库的数据,每个流中的行和列都不同。
我相信,我了解数据流任务的 DefaultBufferMaxRows 和 DefaultBufferSize 背后的基本思想,因为它与每批行相关和目标的最大插入提交大小,我不清楚当有多个不相关的源流和目标流时会发生什么。
我想知道的是,以下哪一项最有意义:
我相信我读过一些地方,最好将每个源和目标都包含在自己的数据流任务中,但目前无法找到链接。
我能够在网上找到的大多数示例似乎总是针对一个来源到一个或多个目的地,或者只是一对一。
答案 0 :(得分:3)
让我脱离基础。数据流任务是一项任务,它组织从 Data Source 到 Data Destination 的数据管道。这是SSIS中的一项独特任务,因为它在SSIS本身中运行数据操作,所有其他任务都调用外部系统以对SSIS之外的数据执行某些操作。
关于 DefaultBufferMaxRows , DefaultBufferSize 与目标的每批行和最大插入提交大小之间的关系。没有直接关系。 DefaultBufferMaxRows 和 DefaultBufferSize 是数据流管道的属性;管道分批处理行,这些属性控制处理批的大小。这些属性控制RAM消耗和数据流任务的性能。
另一方面,每批行和最大插入提交大小是数据目标的属性,即仅在快速加载模式下的OLE DB目标;它控制数据目标本身的性能。您可能具有带有平面文件目标的数据流,其中没有每批行,但是它肯定具有 DefaultBufferMaxRows 和 DefaultBufferSize 属性。
我的经验中的典型用法:
关于包装设计:
作为底线,请保持简单-每个DFT一对源-目标,并仅在必须这样做时使用参数。