SQL 超时故障排除
Posted
技术标签:
【中文标题】SQL 超时故障排除【英文标题】:Troubleshooting SQL Timeout Expired 【发布时间】:2021-01-15 01:07:48 【问题描述】:我的 C# 应用程序目前正在抛出许多以下异常:
超时。在完成之前超时时间已过 操作或服务器没有响应。发生此故障 在尝试连接到路由目的地时。
我正在使用 linq 查询和 NHibernate。
我很难解决这个问题,因为每次运行查询时都不会发生异常。如果我接受查询并直接在 SSMS 上运行它,它似乎运行得非常快。
只有在针对数据库中的一个表运行时才会出现超时异常。
我知道我可以增加查询超时,但我想解决问题的根本原因。我在解决这些问题方面的知识有限,那么接下来我需要采取哪些步骤来确定问题是什么?
【问题讨论】:
如果是 MS SQL Server,你可以让它在一段时间内运行一个监视器,它会分析查询并提出改进建议。但首先,我会记录所使用的确切请求参数,这样您就可以分析这些参数并可能找到一个模式。 SSMS 总是比 SQLClient 运行得快。 SQLClient 类在向/从 c# 发送数据时必须打包/解包数据。错误消息似乎是连接问题,而不是命令超时。发生错误需要多长时间?什么是连接字符串?如果它只发生在一个表上,则表凭据可能不允许您访问。 【参考方案1】:增加连接字符串的“连接超时”。 60 是个好数字。
【讨论】:
以上是关于SQL 超时故障排除的主要内容,如果未能解决你的问题,请参考以下文章
解决Azure Web App 500内部服务器错误超时问题并对其进行故障排除