1

我们在 CLR 过程中有一个内存数据表。经过大量处理后,DataTable 有很多数据需要加载到数据库中的表中。不幸的是,由于我们使用的是上下文连接, SqlBulkCopy 将无法工作(抛出错误:在上下文限制的上下文连接大纲中,请求的操作不可用 )。

我们正在考虑建立一个额外的常规连接并使用它来执行 SQLBulkCopy。考虑到在上下文连接上使用常规连接的开销,这似乎相当愚蠢。我们考虑过遍历 DataTable 中的行并为每个行插入一条记录,但它的大小很大,SQLBulkCopy 似乎更合适。

我们没有与 DataTable 结婚,只是在寻找从 CLR 过程将大量数据插入数据库的最佳方法。关于 DataTable 的最后一点说明,它代表底层数据库表,但不通过 DataSet 或 TableAdapter 绑定到表。在 CLR 过程中这样做的方法并不是很明显。这样做并使用 AcceptChanges 或 Update 方法将是一个可接受的解决方案。

4

1 回答 1

2

根据表的大小,我估计 SQLBulkCopy 比插入快 10-100 倍,所以权衡是值得的。

看到您正在对 DataTable 进行“重要处理”,这无疑需要时间和资源,使用完整连接而不是上下文连接或打开全新连接的微小额外开销是一个很小的代价.

于 2009-04-22T23:05:17.953 回答