TADOStoredProc / TADOQuery CommandTimeout ......?

时间:2013-06-05 20:18:11

标签: sql sql-server delphi timeout delphi-7

在客户端上引发错误“Timeout”以触发针对数据库的一些命令。

我的第一个校正测试选项是将CommandTimeout增加到99999 ...但我担心这种处理会产生更多问题。

经历过吗?? 我想知道我的问题是否相关,和/或是否还有其他选择更加强大和优雅的纠正。

2 个答案:

答案 0 :(得分:0)

你认为提高超时是正确的方法是正确的。通常,我会查找围绕超时运行的日志运行查询。它们通常会在持续时间和阅读方面脱颖而出。

然后我将使用此方法减少查询运行时间:

https://www.simple-talk.com/sql/performance/simple-query-tuning-with-statistics-io-and-execution-plans/

如果是导致问题的报告,并且您无法让它更快地运行,您可能需要开始考虑设置报告数据库。

答案 1 :(得分:0)

CommandTimeout是客户端等待服务器响应的时间。如果查询在主VCL线程中运行,则整个应用程序被“冻结”,并且可能被Windows标记为“无响应”。那么,您希望您的用户在冻结的应用程序中等待99999秒吗?

通常,将Timeout值保留为默认值,而不是像Sam建议的那样专注于调整查询。如果您碰巧有长时间运行的查询(即某些后台数据移动,存储过程中的计算等),请将CommandTimeout设置为0(= INFINITE),但在单独的线程中运行它们。