数据库批量插入时的线程问题?

时间:2012-07-24 12:14:59

标签: c# multithreading

我有25个线程在运行。并且每个线程都遵循:

  1. 读取包含大约1000条记录的txt文件,
  2. 放入数据表
  3. sql bulkinsert into sql server
  4. 启动所有线程后,我需要等待线程完成处理,为此我使用了Thread.Join。我的问题是,线程甚至在完成上述步骤之前就完成了完成任务。我能在这里看到的唯一原因是,数据库表的大小逐渐增加到超过2000万条记录。在那里,插入数据需要一些时间。是否在等待向SQL Server插入数据时线程被中止?我甚至尝试过使用Task.Factory.StartNewContinueWhenAll,但结果是一样的。有没有更好的方法来处理这个?

2 个答案:

答案 0 :(得分:0)

似乎在某些线程中抛出异常。可能是因为与数据库的并发连接的限制。您需要实现正确的错误处理和日志记录以了解根本原因。

答案 1 :(得分:0)

一些事情。
1)如果此任务似乎在所有线程执行完毕之前完成,则说明您使用的是同步错误 2)您的数据库可能在其池中的可用连接中用尽。我相信默认情况下大多数数据库允许10个并发连接(我假设您正确配置)。

CW因为这是一个很长的评论。