Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проверка состояния соединения, microsoft sql server 
:(
    Опции темы
Anden
Дата 1.7.2010, 06:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 5.3.2007

Репутация: нет
Всего: нет



Здравствуйте Всем!!! Возникла следующая проблема: в определенный момент времени приложение работающее с базой  microsoft sql server теряет связь кратковременно и выходят ошибки бесконца пока не перезапустишь приложение. Вопрос: Как можно проконтролировать состояние соединения чтобы можно было  предупредить появление данной ошибки????

Заранее Всем очень благодарен!!!!
PM MAIL   Вверх
mrbrooks
Дата 1.7.2010, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



если используете ADO изучите события ADOConnection 
PM MAIL   Вверх
Anden
Дата 1.7.2010, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 5.3.2007

Репутация: нет
Всего: нет



Цитата(mrbrooks @ 1.7.2010,  07:51)
если используете ADO изучите события ADOConnection

ну вродь изучал но чего то не нашел как проверить состояние соединения, т.е. есть связь с сервером или ее нету. Сетка WI-FI с направленой антеной на 12 км.ьСервак ноходиться в 5 км от клиентского компа.
PM MAIL   Вверх
Anden
Дата 5.7.2010, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 5.3.2007

Репутация: нет
Всего: нет



блин никто мне помочь не может чтоли???? smile  замучался уже
PM MAIL   Вверх
t4aynik
Дата 5.7.2010, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.6.2010

Репутация: нет
Всего: нет



Как спросили, так и ответ получили. вы ж ничего не написали, как у вас что реализовано.... Ошибки  вылазят в цикле, знацца какойто цикл крутится пока какаято функция не получит/отправит данные, причем ошибки этой функции не обрабатываются.  Вот вам и надо найти этот цикл и функцию получения/отправки данных, и сделать там что-нибудь. Если нет функций проверки, так может можно ее в ексцепшен запихнуть? а в кетче сделать ну например реконнект, или сделать признак для дальнейшего реконнекта после выхода из ексцепшна. а сетка не важно какая вайфай или диалап, вы ж не на канальном уровне работаете...

PM MAIL   Вверх
_Dimon_
Дата 5.7.2010, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 25.6.2007
Где: Украина

Репутация: 1
Всего: 1



Цитата(t4aynik @  5.7.2010,  17:59 Найти цитируемый пост)
Ошибки  вылазят в цикле, знацца какойто цикл крутится пока какаято функция не получит/отправит данные, причем ошибки этой функции не обрабатываются.  Вот вам и надо найти этот цикл и функцию получения/отправки данных, и сделать там что-нибудь.



Не обязательно в цикле. Дело в том что у меня в проге тоже такая муть, хотя я использую другой сервер бд (ADS), при дисконекте куча ошибок мол открыта такая-то таблица. У меня есть событие OnDisconnect. Неважно что я там напишу, всеравно вылазят эти ошибки.

Это наверно черз то что открытые датасеты и датасорсы. При дискоконнекте прога как-бы подвисает - а потом эти гребаные сообщения.

Это сообщение отредактировал(а) _Dimon_ - 5.7.2010, 19:17
PM MAIL   Вверх
t4aynik
Дата 6.7.2010, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.6.2010

Репутация: нет
Всего: нет



Так а через что вы коннектитесь? ОДБЦ?
PM MAIL   Вверх
A5uKa
  Дата 6.7.2010, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



Цитата

как проверить состояние соединения, т.е. есть связь с сервером или ее нету


у меня была идея их пинговать  smile 

Код

                if(FormCllient->ReadString("Servers","s"+String(z),"")=="")
                        break;
                else
                {

                        temp=FormCllient->ReadString("Servers","s"+String(z),"");
                        temp.Delete( (temp.Pos('\\') ) , ( temp.Length()-temp.Pos('\\')+1 ) );
                        Indy->Host=temp;
                        try
                        {
                                Indy->ReceiveTimeout=500;
                                Indy->Ping();
                        if (Indy->ReplyStatus.BytesReceived!=0)
                        ConParms->ServComboBox->Items->Add(FormCllient->ReadString("Servers","s"+String(z),""));
                        }
                        catch(EIdSocketError &exc)
                        {
                                if (exc.LastError == 11001);// ShowMessage("Ñåðâåð íå îòâå÷àåò! Áëàáëàáëà");
                                else  ShowMessage("Socket error");
                        }
                }

PM   Вверх
t4aynik
Дата 6.7.2010, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.6.2010

Репутация: нет
Всего: нет



Я с инди не занимался. Это что за пинг, собственно передача ICMP пакетов или передача тестовых пакетов по рабочему соединению?
PM MAIL   Вверх
A5uKa
Дата 6.7.2010, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



Цитата(t4aynik @ 6.7.2010,  10:32)
Я с инди не занимался. Это что за пинг, собственно передача ICMP пакетов или передача тестовых пакетов по рабочему соединению?

Понятия не имею  smile 
PM   Вверх
t4aynik
Дата 6.7.2010, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.6.2010

Репутация: нет
Всего: нет



Ну и что вы после этого хотите тогда?  smile
PM MAIL   Вверх
A5uKa
Дата 6.7.2010, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



Цитата(t4aynik @ 6.7.2010,  11:28)
Ну и что вы после этого хотите тогда?  smile

ну пинг то работает )
PM   Вверх
Anden
Дата 6.7.2010, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 5.3.2007

Репутация: нет
Всего: нет



Цитата(t4aynik @ 6.7.2010,  09:46)
Так а через что вы коннектитесь? ОДБЦ?

ADOConnect с базой  через ADOQuery

Добавлено через 1 минуту и 38 секунд
Цитата(t4aynik @ 6.7.2010,  11:28)
Ну и что вы после этого хотите тогда?  smile

вопрос в том что если связь один раз разорвалась на секунду то она больше не востановиться до перезапуска приложения а только будут безсконца выходить ошибки об отсуствие сервака с таким именем
PM MAIL   Вверх
chaos
Дата 6.7.2010, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 1
Всего: 44



Цитата(Anden @  6.7.2010,  09:54 Найти цитируемый пост)
она больше не востановиться до перезапуска приложения а только будут безсконца выходить ошибки об отсуствие сервака с таким именем

дак надо делать "реконект". в вашем случае вы его делаете перезапуском приложения
PM WWW   Вверх
t4aynik
Дата 6.7.2010, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.6.2010

Репутация: нет
Всего: нет



Цитата(Anden @  6.7.2010,  12:54 Найти цитируемый пост)
вопрос в том что если связь один раз разорвалась на секунду то она больше не востановиться до перезапуска приложения а только будут безсконца выходить ошибки об отсуствие сервака с таким именем

вот все ваши обращения к базе данных запихнуть в try{}, а в catch(){} нужно чтото сделать, что думайте сами, смотря как у вас там сделано.  Не знаю как в АДО сделать разрыв сессии, может вам просто ->Close() поможет. В простом ODBC можно сделать Query->DBSession->Close(), это разрывает текущуюю сессию с базой (Query->Close() этого не делает),  что позволяет в дальнейшем сделать заново соединение с базой без перезапуска программы. Может еще есть способы, меня устраивает этот. По идее вам нужно найти аналогичный способ. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.