-1

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

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

有没有经历过...?我想知道我的问题是否相关,和/或是否有另一种更强大和优雅的更正选项。

4

2 回答 2

0

您认为增加超时不是正确的方法是正确的。通常,我会查找在超时前后运行的日志运行查询。他们通常会在持续时间和阅读方面脱颖而出。

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

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

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

于 2013-06-05T20:36:56.660 回答
0

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

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

于 2013-06-06T07:12:57.563 回答