我正在从SSMS /SQLServer2008R2中的view Designer屏幕上运行一个视图查询,我得到了一个奇怪的错误:
Error Source: .Net SqlClient Data Provider
Error Message: Timeout expired. The timeout period elapsed prior to completion of the
operation or the server is not responding
在过去的一个小时里,我一直在做网络搜索,却找不到任何有效的解决办法。我找到了一些帖子,建议通过转到Tools - Options - Designers
并将Transaction time-out after
值更改为更大的值来更改设计器的超时。
当在普通查询窗口中运行我的查询时,运行时间约为40秒,尽管我已经将此值设置为90秒,但仍然会引发错误。
如有任何建议,敬请见谅。
发布于 2014-12-31 07:33:35
经过更多的研究后,我发现了为什么这个问题发生在最常见的场景中,即您在.NET中开发接口时,您需要为会话指定一个默认的超时时间,用于与Server通信。
我假设此默认超时是在中的“视图设计器”窗口中生成的。
我注意到,对视图的查询(我在一个普通的查询窗口中运行)花费了大约40秒。我在窗口中计时运行查询,从开始运行查询到出现错误,时间为aprox。30秒
这就是我决定如果我不能改变这个默认的超时,那么我应该尝试加快我的查询。我通过显示Actual Execution Plan
重新运行查询,并通过减少最耗时/资源消耗的操作来改进查询(在我的情况下,这是一个排序操作--从我的观点来看,这是对没有索引的计算列的排序操作)。
我删除了ORDER BY
,因为它不是强制性的,查询在10秒内在View窗口中成功运行。
总之,如果您遇到此错误,并且无法更改超时时间,则可以尝试将查询的执行时间提高到30秒以下。
https://stackoverflow.com/questions/27712521
复制