我使用this solution在数据库中插入大约300万条记录。最终当应用程序插入记录一段时间(我的上一次运行持续大约4小时)时,它会给出超时时出现以下SqlException:
“SqlExcepetion:超时已过期。在完成操作之前已经过了超时时间,或者服务器没有响应。”
处理此异常的最佳方法是什么?有没有办法防止这种情况发生,或者我应该抓住异常吗?
提前致谢!
答案 0 :(得分:10)
如果你拥有的一切都是锤子,那么每个问题看起来都像钉子一样。
说真的,即使尝试使用Linq2SQL插入300万条记录也是一种破碎的方法。 ORM是很多好东西,它们不是批量插入元素。
我建议:
批量加载具有很多性能优势。当然假设你在这里谈论类似ETL加载过程的东西 - 但是我没有看到除了数据仓库/报告/归档样式的加载操作之外的300万次加载,它定义并且每个定义不是实时事务处理;)
使用正确的工具完成工作。
答案 1 :(得分:3)
生成SQL脚本(或字符串),并直接执行该脚本。
L2SQL不适合像这样的大规模运营。
答案 2 :(得分:2)
我认为你要增加命令的CommandTimeout。
可以找到解决方案here