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