我正在编写一些代码,这些代码将大量数据导入到三个表中,目前大约有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。 如果我需要添加更多数据,请发表评论。 非常感谢您的帮助
答案 0 :(得分:0)
检查什么是SP获取超时...如果您有任何第三方工具,如Redgate或Avicode,您可以弄明白..或使用Profiler来弄清楚..然后查看SP或查询的执行计划。 。如果您发现任何密钥查找或RID查找,请先解决它,然后重试..