当存储过程花费的时间超过默认超时值时,我似乎遇到了一些随机问题;我被告知这里。
所以我增加了价值,这似乎有所帮助。
但这让我想知道:为什么不总是把它设为一个非常高的数字,以防查询或操作需要很长时间?并不是因为这是允许的 MAX 就需要那么长时间,对吧?
既然如此(我想),为什么默认值会这么低(我相信是 30 秒)?
更新
我最初将 SqlCommand 的 CommandTimeout 值设置为 300(5 分钟),但这样我得到了“发生上下文切换死锁”。所以我把它减少到 120(2 分钟),这对我来说似乎或多或少是“甜蜜点”。在几次测试中,我确实有一次“超时已过期”,但是当我重试相同的确切范围时,它第二次成功完成,所以我想这只是“其中之一” - 120 有时还不够超时,但 300 显然太多了。IOW,这种太少和太多之间的平衡行为似乎不是“一门精确的科学”。