我正在使用 LINQ to SQL 来访问存储过程。这在我的本地 sql 服务器上运行良好。但是一旦我指向内部网络中的另一台服务器,我就会超时。在 SQL Profiler 中,我可以看到发送到问题服务器的查询。这应该意味着查询正在访问服务器并执行正确吗?
我可以直接在问题服务器上运行 LINQ 输出而不会出现问题。这可能不是代码问题,而是 sql server 服务器配置有问题吗?我应该检查什么来解决它?
我正在使用 LINQ to SQL 来访问存储过程。这在我的本地 sql 服务器上运行良好。但是一旦我指向内部网络中的另一台服务器,我就会超时。在 SQL Profiler 中,我可以看到发送到问题服务器的查询。这应该意味着查询正在访问服务器并执行正确吗?
我可以直接在问题服务器上运行 LINQ 输出而不会出现问题。这可能不是代码问题,而是 sql server 服务器配置有问题吗?我应该检查什么来解决它?
连接超时不同于命令超时。
请参阅:SqlCommand.CommandTimeout 和 SqlConnection.ConnectionTimeout 有什么区别?
总结是连接超时是建立连接的时间量。
命令超时是让命令运行的时间量。不仅仅是获取第一条记录需要多长时间,还有获取整个数据集需要多长时间。
如果您看到查询出现在 SQL Profiler 中,那么是的,它正在被发送。所以你基本上达到了 30 秒的命令超时默认限制。
我建议从将命令超时更改为 500 开始,然后看看它会把你带到哪里。然后我会开始做一些性能分析来确定为什么需要这么长时间。也许您可以删除一些请求的数据,甚至添加额外的索引以更好地支持查询。