powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что делать?????? (ODBC)
3 сообщений из 3, страница 1 из 1
Что делать?????? (ODBC)
    #38784073
Добрый день! Для связи с Postgre использую стандартный драйвер ODBC. Подключение стандартное:

Код: plaintext
1.
2.
3.
4.
if(SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv) == SQL_ERROR) {} 
if(SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,SQL_IS_INTEGER) == SQL_ERROR) {} 
if(SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc) == SQL_ERROR) {} 
if(SQLConnect(hdbc,(SQLTCHAR*)szDsn,SQL_NTS,(SQLTCHAR*)szUser,SQL_NTS,(SQLTCHAR*)szPass,SQL_NTS) == SQL_ERROR) {}


...
работаем

Код: plaintext
1.
if(SQLExecDirect(hstmt,(SQLTCHAR*)chQuery,SQL_NTS) == SQL_ERROR) {}


...
и отключаемся:

Код: plaintext
1.
2.
3.
4.
SQLFreeHandle(SQL_HANDLE_STMT,hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
SQLFreeHandle(SQL_HANDLE_ENV,henv);




Данные пишутся 1 раз/мин. Прога стоит на 4-х машинах. На 2-х всё в порядке, а вот на двух других, если смотреть pgAdmin-ом, остаются "висящие" сессии, соответственно каждая через 1 минуту. В конце-концов, через какое-то время сервер просто висит! Нашёл в МСДН функцию SQLFreeConnect, но её категорически не рекомендуют использовать! В настройках драйвера ODBC тоже не нашёл каких-либо тайм-аутов на что-либо! В реестре есть строка тайм-аута на запрос, подумал — может это универсальный параметр (ну не хватило фантазии у разработчиков насчёт имени параметра ), менял — пофиг! Вопрос: как надёжно убить связь с БД? Или это что-то в сетевых настройках этих компов — ведь на двух-то работает! Может кто-то помочь?
...
Рейтинг: 0 / 0
Что делать?????? (ODBC)
    #38784087
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александррррри отключаемся:
Поставь тут проверку возвращаемого значения. Ты не поверишь, но эта функция может
завершиться с ошибкой: http://msdn.microsoft.com/en-us/library/ms713946(v=vs.85).aspx
Поставь запись в файл лога сообщения об успешном отключении и/или возвращённой ошибке.
Анализируй это.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Что делать?????? (ODBC)
    #38784148
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлександрррррДанные пишутся 1 раз/мин. Прога стоит на 4-х машинах. На 2-х всё в порядке, а вот на двух других, если смотреть pgAdmin-ом, остаются "висящие" сессии, соответственно каждая через 1 минуту. В конце-концов, через какое-то время сервер просто висит!


Твой код к этой проблеме почти наверняка никак не относится.


АлександрррррНашёл в МСДН функцию SQLFreeConnect, но её категорически не рекомендуют использовать!


Её не категорически нельзя использовать -- она просто устаревшая, сейчас есть

Код: plaintext
1.
SQLFreeHandle(SQL_HANDLE_DBC,hdbc);



и он у тебя в коде есть.

АлександрррррВ настройках драйвера ODBC тоже не нашёл каких-либо тайм-аутов на что-либо!


А на что таймауты ?
Таймауты могут быть на коннект, и на выполнение запроса.


АлександрррррВопрос: как надёжно убить связь с БД? Или это что-то в сетевых настройках этих компов — ведь на двух-то работает! Может кто-то помочь?

Это скорее всего сетевые проблемы.

Тебе могу только посоветовать в твой код добавить больше диагностики ошибок , потому что сейчас если у тебя будет ошибка -- ты её даже не увидишь.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что делать?????? (ODBC)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]