0

在对 SQL Server 数据库执行 sql 代码时,我们收到以下 ODBC 超时错误。

“连接错误:[Microsoft][ODBC SQL Server Driver]Timeout expired”“S1T00”

这里令人困惑的是,我们的堆栈转储表明它在发生超时时正在执行的 SQL 代码 - 非常简单:

选择 @@TRANCOUNT 作为 TranCount

或者有时...

开始交易

我们的客户说,发生这些错误时数据库服务器上的负载并没有压倒一切。什么可能导致这些简单的语句超时?我相信超时设置相当短(在 1 到 5 秒之间)......但仍然, SELECT @@TRANCOUNT 应该是瞬时的。

有任何想法吗?

4

1 回答 1

2

它可能取决于驱动程序,但我认为 ODBC 超时可能由客户端处理。这意味着从病毒扫描程序到杂项进程的任何网络延迟甚至轻微的服务器故障都可能很容易导致 1 或 2 秒的延迟。因此,如果您的超时实际上是 1 秒,那么您可能会遇到超时错误似乎并不奇怪。

对于合理的超时,即使 5 秒似乎也有点偏低。这是假设客户端和服务器不在同一台物理机器上。

于 2010-06-03T23:14:37.813 回答