我正在尝试将大量数据插入 SQL 服务器。我的目标表有一个名为“Hash”的唯一索引。
我想用 SqlBulkCopy 替换我的 SqlDataAdapter 实现。在 SqlDataAapter 中有一个名为“ContinueUpdateOnError”的属性,当设置为 true 时,adapter.Update(table) 将插入所有可能的行并使用 RowError 属性标记错误行。
问题是如何使用 SqlBulkCopy 尽快插入数据,同时跟踪哪些行被插入,哪些行没有被插入(由于唯一索引)?
以下是附加信息:
该过程是迭代的,通常按计划重复。
源表和目标表可能很大,有时有数百万行。
尽管可以先检查散列值,但每行需要两个事务(首先从目标表中选择散列,然后执行插入)。我认为在 adapter.update(table) 的情况下,检查 RowError 比检查每行的哈希命中要快。