привет.
Исходные данные.
Программа (С++) бежит 24/7. По запросу клиента делает выборку из БД, подключена через ODBC (к MS SQL). Архитектура построена так, что соединенте все время открыто. Менять архитектуру нельзя. Это приводит к тому, что после back-up-а SQL сервера или проблем с локальной сетью, программу надо перестартовывать.
Вопрос.
Надо сделать, чтоб программа сама решала проблему с исчезновением соединения.
Какие-нибудь идеи ?
How to implement .... ODBC connection lost error handing
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- dima
- Житель
- Сообщения: 690
- Зарегистрирован: 19 фев 2003, 19:26
- Откуда: Хабаровск->Toronto
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
-
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
dima,
1) Есть ли возможность переписать программу? Если да, то в чём собственно затруднения нормально обрабатывать экзепш, когда не удаётся соединиться с сервером в промежутках времени, когда он бекапится?
2) Судя потому, что ты написал, программа выполняет с некоторой периодичностью некий мониторинг, сдёргивая с сервака статистику. Не вижу необходимости держать всё время соединение открытым в этом случае. Твоя задача и тебе решать, конечно. Но поясни, если это возможно, зачем такая горбатая архитектура?
1) Есть ли возможность переписать программу? Если да, то в чём собственно затруднения нормально обрабатывать экзепш, когда не удаётся соединиться с сервером в промежутках времени, когда он бекапится?
2) Судя потому, что ты написал, программа выполняет с некоторой периодичностью некий мониторинг, сдёргивая с сервака статистику. Не вижу необходимости держать всё время соединение открытым в этом случае. Твоя задача и тебе решать, конечно. Но поясни, если это возможно, зачем такая горбатая архитектура?
-
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
Папа,
1) если ты под тредом ты понимаешь тоже, что и я, т.е. один из вторичных потоков процесса, то всё можно сделать и в первичном потоке. Другое дело, что у Димы, скорее всего нет возможности переписать код того приложения. Дима-то, как видно из его постингов не ламер. Сделал бы давно, если б был у него сорц.
2) возможно, конечно, Папа, что ты действительно крут, как я. И ты имеешь ввиду, что можно написать прогу, которая будет из одного из своих потоков (вторичных, скорее всего тогда) создавать процесс для того приложения (о котором мы говорим и которое нельзя как бы перекодировать). Тогда действительно в отдельном потоке можно select-м проверять "keepalive", и если не alive, то прибивать дочерний процесс, а затем порождать его снова, когда БД станет доступной.
В этом случае ты, конечно, прав. И мыслишь очень достойно. Типа, как я. Тогда ты молодец.
1) если ты под тредом ты понимаешь тоже, что и я, т.е. один из вторичных потоков процесса, то всё можно сделать и в первичном потоке. Другое дело, что у Димы, скорее всего нет возможности переписать код того приложения. Дима-то, как видно из его постингов не ламер. Сделал бы давно, если б был у него сорц.
2) возможно, конечно, Папа, что ты действительно крут, как я. И ты имеешь ввиду, что можно написать прогу, которая будет из одного из своих потоков (вторичных, скорее всего тогда) создавать процесс для того приложения (о котором мы говорим и которое нельзя как бы перекодировать). Тогда действительно в отдельном потоке можно select-м проверять "keepalive", и если не alive, то прибивать дочерний процесс, а затем порождать его снова, когда БД станет доступной.
В этом случае ты, конечно, прав. И мыслишь очень достойно. Типа, как я. Тогда ты молодец.
-
- Житель
- Сообщения: 915
- Зарегистрирован: 09 мар 2003, 22:46