在针对SQL Server数据库执行sql代码时,我们遇到以下ODBC超时错误。
“连接错误:[Microsoft] [ODBC SQL Server驱动程序]超时已过期” “S1T00”
令人困惑的是,我们的堆栈转储表明它在超时发生时正在执行的SQL代码 - 非常简单:
SELECT @@ TRANCOUNT AS TranCount
或有时......
BEGIN TRANSACTION
我们的客户说在发生这些错误时数据库服务器上的负载并不是很大。什么可能导致这些简单的语句超时?我相信超时设置相当短(1到5秒之间)......但仍然,SELECT @@ TRANCOUNT应该是瞬时的。
有什么想法吗?
答案 0 :(得分:2)
它可能依赖于驱动程序,但我认为ODBC超时可能由客户端处理。这意味着任何网络延迟甚至是由病毒扫描程序到其他进程的任何事情造成的轻微服务器打嗝都可能导致1或2秒的延迟。因此,如果您的超时实际为1秒,那么您可能会遇到超时错误并不令人惊讶。
对于合理的超时,似乎即使是5秒也有点偏低。这假设客户端和服务器不在同一台物理计算机上。