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