System.Data.SqlClient.SqlException:提交时超时已到期

时间:2014-01-02 20:05:49

标签: sql-server transactions timeout bigdata

我正在编写一些代码,这些代码将大量数据导入到三个表中,目前大约有600万行。我想在事务中执行此操作,因此如果有任何问题或用户取消导入,则不会导入任何内容。这在我自己的开发机器上工作正常但是在较慢的amazon ec2实例和微型sql实例上我得到以下异常:

System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding

现在我知道提交最终会完成,因为我看的时候数据存在于表中,所以我的问题是;如果不将连接超时属性添加到我的连接字符串(我只希望这一个操作不会超时),或者这是一个非常困难/危险的事情,这是否可以轻松避免? 我不确定是否应该导入到保存表中,然后在我准备好时调用存储过程来移动数据,因为我认为这会导致更短的事务)

我正在使用Ms Sql server 2012。 如果我需要添加更多数据,请发表评论。 非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

检查什么是SP获取超时...如果您有任何第三方工具,如Redgate或Avicode,您可以弄明白..或使用Profiler来弄清楚..然后查看SP或查询的执行计划。 。如果您发现任何密钥查找或RID查找,请先解决它,然后重试..