我有一个带有多个连接的SQL查询&它从数据库中提取数据进行处理。这应该是按计划运行的。所以第1天,它可能会拉500,第2天说400。
现在,如果由于某种原因停止服务&未处理的数据,然后在第3天可能有多达1000条记录要处理。这导致sql查询超时。
如何最好地处理这种情况而不会导致超时&逐步减少工作量?
TIA
答案 0 :(得分:3)
查看您的查询,可能是它未经过优化,在适当的位置放置索引。没有看到你的表结构,查询,不能再帮助了。
答案 1 :(得分:3)
创建批处理。只允许说n个记录要处理。可以说n = 100 ...... 然后使您的选择查询仅选择前100,直到没有更多的记录要处理。
YourCommandObject.CommandTimeout = 0;
这将允许您的命令永远运行。
请注意,这可能会导致数据库锁定和其他问题。如果您使用上述批处理过程并确定运行时间最长的查询,则可以将连接超时设置为必要的值。
答案 2 :(得分:1)
一个实际的解决方案是增加命令超时:
var com = yourConnection.CreateCommand();
com.CommandTimeout = 0;
...
CommandTimeout
属性是等待命令执行的时间(以秒为单位)。默认值为30秒。值为0表示没有限制,应该在CommandTimeout中避免,因为尝试执行命令将无限期地等待。