У меня есть клиентское приложение C++ .NET 2003 с использованием Sybase 15, который подключается к серверу базы данных Sybase 12.5 с использованием ASEOLEDB. Клиентский код строит строку соединения и выполняет хранимую процедуру, вызывая the Microsoft library function CCommand::Open.Клиентское соединение ASEOLEDB прерывается с перерывами
В большинстве случаев CCommand :: Open возвращает S_OK и код продолжается. Однако, казалось бы, случайным образом, этот вызов начнет возвращать E_FAIL. База данных, хранимая процедура и ввод все одинаковы. Это будет продолжаться 20-30 минут, а затем, казалось бы, разрешится и снова начнет работать.
Когда проблема возникает, я могу использовать Toad для Sybase для выполнения хранимой процедуры с тем же входом без проблем. Я также могу использовать более старую версию клиентского приложения, которое использует Sybase 11, у которого также нет проблем. Я также могу запустить скрипт в PowerShell с той же строкой соединения Sybase 15, которая также успешно выполняется.
Я подозреваю, что какая-то разница в пуле соединений между клиентским кодом Sybase 11 и Sybase 15 является проблемой, но я не знаю, как ее доказать/опровергнуть/изолировать причину.
Возможно связанный с этим вопрос: Intermittent Oledb connection error “Cannot open database ''.”