在c#中使用SqlBulkCopy时如何从失败中恢复

时间:2015-04-16 08:42:24

标签: c# sql-server bulkinsert sqlbulkcopy

我使用SqlBulkCopy将大量数据插入SQL Server。代码很简单,如下所示:

using (var copy = new SqlBulkCopy(connection))
{
    copy.BatchSize = 10000;
    copy.DestinationTableName = "MyTableName";
    // other parameters...

    copy.WriteToServer(reader);
}

我遇到的问题是数据量很大,因此完成复制操作需要很长时间。有时网络或SQL Server中会出现暂时性错误,这会导致WriteToServer调用失败。

在这些情况下,我希望能够从失败的批处理中继续复制,而不是从一开始就重新删除所有数据并重复复制。但是我无法做到这一点,因为当我抓住WriteToServer引发的异常时,reader对象本来就处于错误的位置。

我能想到的一个解决方案是在代码中缓存整个批处理。但这意味着我需要管理缓存的内存。我也相信这种方法会对性能造成很大影响。

还有更好的方法吗?感谢。

0 个答案:

没有答案