У одного из наших клиентов есть приложение (FoxPro 9), работающее поверх серверной части SQL Server 2005. Время от времени они теряют соединение ODBC с базой данных SQL Server. Ниже приведена начальная информация об ошибке:
Err Msg: Ошибка подключения: [Microsoft][Драйвер ODBC SQL Server][DBNETLIB]ConnectionRead (recv()).
Сообщение об ошибке ODBC: [Microsoft] [Драйвер ODBC SQL Server] [DBNETLIB] ConnectionRead (recv()).
Состояние SQL: 01000
Ошибка ODBC №: 10054
Дескриптор ODBC: 1
Ошибка FoxPro №: 1526
Мы не можем дублировать эту ошибку по команде. Мы пробовали любое количество решений безрезультатно. Одно такое аппаратное базовое решение, которое мы нашли, описано в: http://support.microsoft.com/kb/942861/en-us
Я упоминаю об этом, потому что это почти идеально соответствует тому, что мы видели. Однако мы реализовали все обходные пути, перечисленные в этом сообщении (и в этом http://support.microsoft.com/kb/948496 ) - и проблема все еще сохраняется.
Эта проблема проявляется после выполнения длительных запросов, но мы не получаем никаких ошибок тайм-аута ни от приложения, ни от SQL Server. Я не верю, что это результат тайм-аута простоя, потому что иногда это происходит в середине выполняющейся программы.
Я не разбираюсь в оборудовании, но и сеть, и сервер (Windows Server 2003) кажутся быстрыми и хорошо спроектированными. Однако бывают случаи, когда сервер базы данных испытывает значительную нагрузку.
Если у кого-то есть какие-либо предложения о том, что мы могли бы попробовать... пожалуйста, дайте нам знать!