与DataTable中的行数相关的SqlBulkCopy批处理大小问题

3

我需要确保每个批次都是完全满的吗?比如,如果我有一个包含12028行的数据表,我可以只使用10000行的批量大小,它会自动创建2个批次,一个批次有10000行,另一个有2028行吗?

谢谢。

1个回答

2
根据MSDN: SqlBulkCopy.BatchSize的说明:
如果SqlBulkCopy实例没有声明UseInternalTransaction选项,则每次将BatchSize行发送到服务器,但不执行任何与事务相关的操作。如果启用了UseInternalTransaction,则每个批次的行都作为单独的事务插入。
BatchSize属性可以随时设置。如果已经在进行大容量复制,则当前批次的大小根据上一批次的大小确定。随后的批次使用新的大小。如果BatchSize最初为零并且在WriteToServer操作已经在进行中时发生更改,则该操作会将数据加载为单个批处理。同一SqlBulkCopy实例上的任何后续WriteToServer操作都使用新的BatchSize。
基于这些信息,我倾向于认为,如果将批处理大小设置为10k行,而您提供了12k+行,则会创建多个批处理。

嗯,这并不是特别清楚。我想我会暂时假设它可以,除非其他人也有意见。感谢您的帮助。 - Hans Rudel
你说得对,我终于让我的程序工作了,并测试了上面的内容,即使用批量大小为10上传15行。所有行都被添加了。再次感谢您的帮助,非常感激!! - Hans Rudel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接