我正在SSMS / SQL Server 2008R2中的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
值更改为更大的值来更改Designer的超时。
在普通的查询窗口中运行我的查询时,运行大约需要40秒,虽然我将此值设置为90秒,但它仍然会抛出错误。
任何建议都表示赞赏。
答案 0 :(得分:0)
经过一些更多的研究后,我发现了为什么问题出现在最常见的场景中,即在.NET中开发界面时,需要指定用于与之通信的会话的默认超时时间SQL Server。
我认为这个默认超时是在SQL Server Management Studio中的View Designer窗口中构建的。
我观察到我在普通查询窗口中运行的视图查询大约需要40秒。我定时在视图设计器窗口中运行查询,从开始运行查询,直到错误发生,时间是aprox。 30秒。
我决定如果我无法更改此默认超时,那么我应该尝试加快查询速度。我通过显示Actual Execution Plan
来重新运行查询,并通过减少大部分时间/资源消耗操作来改进查询(在我的情况下,这是一个排序操作 - {I}来自我视图中的计算列,没有索引)。
我删除了ORDER BY
,因为它不是必需的,并且查询在视图设计器窗口中成功运行了不到10秒。
总之,如果您遇到此错误并且无法更改超时时间,那么您可以尝试将查询的执行时间提高到30秒以下。