在我的包中,我有一个包含大约 120000 条记录的源表和一个没有缓存模式的查找转换和一个目标表。我将与目标不匹配的源数据传递到同一个目标表中。当我执行我可以看到包,一次只有 9000 条记录仅移动到查找。一旦插入目标,其他 9000 条记录就会移动到查找并继续。这只有 9000 条记录的原因是什么?我尝试通过更改 defaultbuffermaxrows 和 defaultbuffersize成不同的值,但 9000 记录一次只移动。
最佳答案
在 OLEDB 目标中,我们有一个属性 ROWS PER BATCH
。您可以使用它来更改每批传输的行数。
在这里,您会看到 9000 条记录正在移动,因为默认最大行数为 10,000。
来自MSDN
Define the default size of the buffer that the task uses, by setting the DefaultBufferSize property, and define the maximum number of rows in each buffer, by setting the DefaultBufferMaxRows property. The default buffer size is 10 megabytes, with a maximum buffer size of 100 megabytes. The default maximum number of rows is 10,000.
编辑(根据您的评论):
它不起作用,因为您已将查找
的缓存
选项设置为无缓存
。要插入/流动所需的行或自定义行(>默认行),请按照以下说明操作。
- 在查找设置中将
缓存模式
设置为完全缓存
。 - 在查找时使用
OLEDB 连接管理器
。 - 在
OLEDB Destination
中设置ROWS PER BATCH
,如上所述。 - 在 DataFlow 属性中,将
Default BufferMaxRow
设置为您所需的行。
可以正常工作。
关于ssis - 如何增加要查找的数据流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10846177/