У меня есть приложение C ++ (скомпилированное с VS2003, работающее на сервере Windows 2000 с базой данных SQL 2000), которое работало годами и в настоящее время терпит крах.
Моя запись в журнале показывает, что соединение с базой данных (ODBC с использованием драйвера SQL Server) будет работать нормально (чтение и обновление базы данных), а затем после того, как возникнет исключение (и будет перехвачено / зарегистрировано, но без реальной детализации), соединение может считывать данные база данных, но больше не может обновлять базу данных.
Итак, я вижу, что поток читает следующую строку для обработки, отправляет данные из сокета на другой сервер, пытается обновить запись как обработанную и BOOM.
Единственная информация об ошибке, которую я получаю после неудачного запроса:
[Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. [37000]
, за которым следует пробел, например, где вы обычно видите причину сбоя запроса (неверный синтаксис, таблица не найдена, что угодно, но на этот раз ничего).
Этот код обрабатывает десятки тысяч записей, может запускаться месяцами и вскоре после того, как этот поток (всегда кажется первой жертвой, может быть просто самым занятым и получает удар первым) начинает задыхаться, все остальные соединения, кажется, имеют та же проблема - чтение разрешено, но обновления выдают это исключение.
В последний раз я быстро взглянул на диспетчер задач (он быстро отскочил, так что я не могу долго анализировать), и приложение использовало 5–6 мегабайт оперативной памяти, а остальные ресурсы выглядели нормально.
Другие приложения используют базу данных и не имеют ошибок в течение этого времени.
Я не могу найти ничего в Интернете, где вы получите этот отчет об ошибке, когда запрос действителен ...
HELP!