我只是将与数据库结构一样的datatable用常规的SqlbulkCopy保存进数据库,测试发现1000条以下可以,而且很快,但是4000条左右就出错了。
有时报超时,有时干脆没反应,就挂在那了。
而且4000条时第一次一般都能导进去,再运行就没反应了。
1.尝试将datatable拆出来,分批调用SqlbulkCopy,哪怕拆成10条一个datatable也还是有这个问题。
2.微软给的补丁包装不上:http://support.microsoft.com/kb/913177/zh-cn
请问哪位解决过此问题?
原因找到了,我在批量导入前先将数据库中的数据删除了,如果不删除,就没有问题。
看来还是删除后资源没释放
不过删除是用的ibatis自带的功能,怎么会没释放呢.
进一步原因:
sqlbulkcopy采用ado.net的数据库连接,而删除采用的是ibatis连接,则不行。因此,删除操作也要使用此链接,猜测是不能在同一个事务里ibatis和ado.net混用?
可以肯定一点:不是数据量的问题,退一步说4000条数据是不会出现问题的。
问题应该出现在其他地方。
楼主可以做一个简单实验。表格数据格式比较简单,3个字段:自增、字符串、数字。
随机生成1万条数据,然后提交。
是不是有资源没释放,或者是timeout的设置不合理等