当此查询从Web执行时,它会在30秒后超时。但是,当我完全按照Profiler中呈现的方式剪切/粘贴查询,并将其放入SSMS中运行时,它几乎立即返回。我已经追踪到问题在于连接中设置了ARITHABORT为OFF(也就是说,如果我在SSMS会话中关闭ARITHABORT,则它会运行很长时间,如果我将其打开,则它会非常快地运行)。但是,阅读ARITHABORT的说明,它似乎不适用...... 我只是简单地使用WHERE条件执行一次单个内部连接,根本没有执行任何算术运算:
为什么在这种情况下ARITHABORT OFF会导致此行为?是否有任何方法可以从SSMS更改该连接的ARITHABORT设置?我正在使用SQL Server 2008。
ARITHABORT
本身不是原因,将SET ARITHABORT ON
添加到存储过程定义中也不能保证问题不会再次发生。问题出在参数嗅探上。 - Martin Smith