SQLBulkCopy.WriteToServer DataTable方法将部分数据写入表中?

时间:2012-04-07 15:02:45

标签: vba datatable

我在DataTable中有12,000行,并且在尝试WriteToServer时超时。有没有办法我可以一次只将DataTable的一部分写入数据库而不是一次写入?我目前的数据库连接不良。如果我一次只能写500行,我可以避免超时。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

你应该看看SqlBulkCopy.BatchSize

  

批处理完成后,处理BatchSize行或在那里   不再有要发送到目标数据源的行。

     

零(默认值)表示每个WriteToServer操作都是a   单批。

     

如果声明了SqlBulkCopy实例而没有   有效的UseInternalTransaction选项,行被发送到服务器   BatchSize一次一行,但不执行与事务相关的操作。   如果UseInternalTransaction生效,则插入每批行   作为单独的交易。

     

可以随时设置BatchSize属性。如果是批量副本   已经在进行中,当前批次的大小根据   以前的批量大小。后续批次使用新大小。如果   BatchSize最初为零,并在WriteToServer时更改   操作已在进行中,该操作将数据加载为   单批。任何后续的WriteToServer操作都是一样的   SqlBulkCopy实例使用新的BatchSize。

参考here

答案 1 :(得分:0)

我遇到了同样的问题,我只是这样解决了这个问题:

Dim strConnection as string="myconnectionstring"
Dim sqlBulk As New SqlBulkCopy(strConnection)
sqlBulk.BulkCopyTimeout = 0