Страница 1 из 1
How to implement .... ODBC connection lost error handing
Добавлено: 09 июл 2004, 07:43
dima
привет.
Исходные данные.
Программа (С++) бежит 24/7. По запросу клиента делает выборку из БД, подключена через ODBC (к MS SQL). Архитектура построена так, что соединенте все время открыто. Менять архитектуру нельзя. Это приводит к тому, что после back-up-а SQL сервера или проблем с локальной сетью, программу надо перестартовывать.
Вопрос.
Надо сделать, чтоб программа сама решала проблему с исчезновением соединения.
Какие-нибудь идеи ?
Добавлено: 09 июл 2004, 07:54
папа Карло
например раз в минуту в соседнем треде делать select 1 если приехало назад что значит база живая.
Добавлено: 09 июл 2004, 19:00
vg
dima,
1) Есть ли возможность переписать программу? Если да, то в чём собственно затруднения нормально обрабатывать экзепш, когда не удаётся соединиться с сервером в промежутках времени, когда он бекапится?
2) Судя потому, что ты написал, программа выполняет с некоторой периодичностью некий мониторинг, сдёргивая с сервака статистику. Не вижу необходимости держать всё время соединение открытым в этом случае. Твоя задача и тебе решать, конечно. Но поясни, если это возможно, зачем такая горбатая архитектура?
Добавлено: 09 июл 2004, 19:18
vg
Папа,
1) если ты под тредом ты понимаешь тоже, что и я, т.е. один из вторичных потоков процесса, то всё можно сделать и в первичном потоке. Другое дело, что у Димы, скорее всего нет возможности переписать код того приложения. Дима-то, как видно из его постингов не ламер. Сделал бы давно, если б был у него сорц.
2) возможно, конечно, Папа, что ты действительно крут, как я. И ты имеешь ввиду, что можно написать прогу, которая будет из одного из своих потоков (вторичных, скорее всего тогда) создавать процесс для того приложения (о котором мы говорим и которое нельзя как бы перекодировать). Тогда действительно в отдельном потоке можно select-м проверять "keepalive", и если не alive, то прибивать дочерний процесс, а затем порождать его снова, когда БД станет доступной.
В этом случае ты, конечно, прав. И мыслишь очень достойно. Типа, как я. Тогда ты молодец.
Добавлено: 10 июл 2004, 11:08
ura
А подсесть на ODBC драйвер нет возможности?