Ошибка тайм-аута ODBC для простого запроса - PullRequest
0 голосов
/ 04 июня 2010

Мы получаем следующие ошибки тайм-аута ODBC при выполнении кода sql для базы данных SQL Server.

"Ошибка подключения: [Microsoft] [Драйвер ODBC SQL Server] Истекло время ожидания" "S1T00"

Смущает то, что наш дамп стека говорит, что код SQL, который он выполняет, когда происходит тайм-аут - очень прост:

SELECT @@ TRANCOUNT AS TranCount

или иногда.

BEGIN TRANSACTION

Наш клиент говорит, что нагрузка на сервер базы данных в момент возникновения этих ошибок не является чрезмерной.Что может вызвать тайм-аут этих простых заявлений?Я считаю, что время ожидания довольно короткое (от 1 до 5 секунд) ... но все же SELECT @@ TRANCOUNT должен быть мгновенным.

Есть идеи?

1 Ответ

2 голосов
/ 04 июня 2010

Это может зависеть от драйвера, но я думаю, что тайм-аут ODBC может быть обработан клиентом. Это означает, что любые задержки в сети или даже небольшие сбои в работе сервера, вызванные чем-либо, от вирусного сканера до разных процессов, могут легко вызвать задержку в 1 или 2 секунды. Поэтому, если ваше время ожидания составляет 1 секунду, неудивительно, что вы можете получить ошибки времени ожидания.

Кажется, что даже 5 секунд - это немного низко для разумного времени ожидания. Это предполагает, что клиент и сервер не находятся на одном физическом компьютере.

...