请教一个多线程访问数据库的问题
任务描述:在sql server中有两张表,表1为原始数据,表2为分析数据。程序功能是从表1中逐条读取原始数据,进行分析后形成分析数据,插入表2。因为数据量较大(千万级),所以开发一个方法(方法1)处理表1数据、生成表2数据。在主程序中将表1的数据分为4段,调用了四个task,每个task 均调用方法1。
方法1的处理流程是:建立数据库连接,按照传递进来的开始、结束key值,读取表1数据,进行处理并生成表2数据,插入datatable,然后调用sqlbulkcopy插入表2.。
因为四个task对数据进行了分段,能够保证在方法1中读取表1、插入表2时都是处理不同的数据,所以我没有加锁。
碰到的问题:我重复执行了几次,有时候能够正常完成;有时候会在并发调用方法1时锁住;还有两次在插入表2时( PDbulkCopy.WriteToServer(PQDT);)报错数据库超时。
想请教一下:我对该问题的处理方式是否正确?为什么会在插入表2时报错,是否需要加锁?
谢谢