【发布时间】:2013-06-01 16:36:33
【问题描述】:
在客户端上引发错误“超时”以触发针对数据库的一些命令。
我的第一个更正测试选项是将 CommandTimeout 增加到 99999 ...但我担心这种处理会产生更多问题。
经历过...? 我想知道我的问题是否相关,和/或是否有其他更强大和优雅的更正选项。
【问题讨论】:
标签: sql sql-server delphi timeout delphi-7
在客户端上引发错误“超时”以触发针对数据库的一些命令。
我的第一个更正测试选项是将 CommandTimeout 增加到 99999 ...但我担心这种处理会产生更多问题。
经历过...? 我想知道我的问题是否相关,和/或是否有其他更强大和优雅的更正选项。
【问题讨论】:
标签: sql sql-server delphi timeout delphi-7
您认为增加超时不是正确的方法是正确的。通常,我会查找在超时前后运行的日志运行查询。它们通常会在时长和阅读方面脱颖而出。
然后我将使用这种方法来减少查询运行时间:
如果它是导致问题的报告并且您无法使其运行得更快,您可能需要开始考虑设置报告数据库。
【讨论】:
CommandTimeout 是客户端等待服务器响应的时间。如果查询在主 VCL 线程中运行,则整个应用程序被“冻结”并且可能被 Windows 标记为“无响应”。那么,您是否希望您的用户在冻结的应用程序处等待 99999 秒?
通常,将超时值保留为默认值,而是按照 Sam 的建议专注于调整查询。如果您碰巧有长时间运行的查询(即存储过程中的一些后台数据移动、计算等),请将 CommandTimeout 设置为 0 (=INFINITE),但在单独的线程中运行它们。
【讨论】: