为啥我在应用程序中收到 sqlcommand 超时?
Posted
技术标签:
【中文标题】为啥我在应用程序中收到 sqlcommand 超时?【英文标题】:Why am I getting a sqlcommand timeout in the application?为什么我在应用程序中收到 sqlcommand 超时? 【发布时间】:2009-08-05 18:36:14 【问题描述】:我在调试应用程序时遇到 sqlcommand 超时问题,即使存储过程在 Management Studio 中运行时间不到 25 秒。我将超时属性设置为 180 秒,但仍然出现错误。有什么建议吗?
【问题讨论】:
【参考方案1】:你在哪里设置超时属性?当我在 SqlConnection 字符串中设置超时时,我曾经遇到过同样的问题,但事实证明我在 SqlCommand 本身中也需要它。
【讨论】:
【参考方案2】:25 秒对于运行存储过程来说是很长的时间。我建议进一步优化查询。
【讨论】:
【参考方案3】:您是在连接字符串中设置“连接超时”还是“命令超时”?他们很容易出错。
--编辑
如果您的系统没有锁定 SP 中使用的表,请尝试在您的代码中搜索。
它不会解决问题,但是记录程序的开始/结束(在数据库端,通过将 SP 放在另一个 SP 中)可以告诉您问题是否在启动 SP 之前(因为网络,网络服务器加载等)或在执行时。
希望对你有帮助
【讨论】:
CommandTimeout 在代码中,而不是在连接字符串中。我不明白为什么可以在管理工作室中运行 1-25 秒的 sp 在应用程序中可能需要 2.5-4 分钟。你有什么可以建议的吗?顺便说一句,我没有写 sp,也不能改变它。【参考方案4】:尝试针对该存储过程运行 sp_recompile,然后从您的应用程序再次尝试。
【讨论】:
以上是关于为啥我在应用程序中收到 sqlcommand 超时?的主要内容,如果未能解决你的问题,请参考以下文章
调用 SQL Server 存储过程的 SqlCommand 超时
SqlCommand 超时,CommandTimeout 和 ConnectionTimeout 都 = 0
.Net SqlCommand.ExecuteNonQuery 中的查询超时,适用于 SQL Server Management Studio