我正在使用LINQ to SQL来访问存储过程。这在我的本地SQL服务器上工作正常。但是一旦我指向内部网络中的不同服务器,我就会超时。在SQL事件探查器中,我可以看到发送到问题服务器的查询。这应该意味着查询正在命中服务器并执行权限吗?
我可以直接在问题服务器上运行LINQ输出而不会出现问题。这可能不是代码问题,而是sql server服务器配置的一些问题?我应该检查什么来解决它?
答案 0 :(得分:2)
连接超时与命令超时不同。
请参阅:What is the difference between SqlCommand.CommandTimeout and SqlConnection.ConnectionTimeout?
摘要是连接超时是建立连接的时间量。
命令超时是让命令运行的时间。获取第一条记录需要多长时间,但获取整个数据集需要多长时间。
如果您看到SQL Profiler中显示的查询,则表示正在发送该查询。所以你基本上达到命令超时默认限制30秒。
我建议首先将命令超时更改为500,然后查看它的位置。然后我会开始做一些性能分析,以确定为什么需要这么长时间。也许您可以删除一些请求的数据,甚至添加其他索引以更好地支持查询。