Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TOleException: ошибка подключения [D7, MSSQL]


yg ©   (2004-10-26 10:18:00) 

Для получения данных с MS SQL Server 2000 пользуюсь следующим кодом:
SrvSet: TADODataSet;

...

if SrvSet.Active then SrvSet.Close;
SrvSet.CommandText := "select * from customers";
SrvSet.Open;
....
SrvSet.Close;


Похожие куски разбросаны по всей программе.
Возникла следующая проблема: Если сервер остановить, то все экземпляры программы, пытающиеся подключиться к серверу обламываются с сабжем. Но после того, как сервер снова будет запущен, данное исключение не исчезает, пока не перезапустишь саму программу. Соответственно все данные накопленные в этом сеансе работы программы невозможно сохнанить на сервере.


Vlad   (2004-10-26 12:02:00) [1]


> yg ©   (26.10.04 11:56) [13]

А чего ты хочешь? Если сервак упал, то коннект (который ты до этого открыл) уже мертвый. Даже если сервак снова заработал, коннект от этого живее не станет.
Поэтому тебе и говорят, что при эксепшене, нужно заново коннектиться к серверу, а ты похоже толи слушать не хочешь, толи проблему нормально объяснить не можешь.


yg   (2004-10-26 11:56:00) [2]

>Дело в большей степени в Close/Open коннекта.
Правда??? А я-то думал, где же проблема-то...
>Да и зачем мне моделировать, если у меня все проекты работают...:)
Слушай, а что ты тогда здесь выступаешь, раз помочь не хочешь, иди в "Просто треп" и там болтай ерундой.


Johnmen   (2004-10-26 11:50:00) [3]

>yg ©   (26.10.04 11:39) [11]

Дело в большей степени в Close/Open коннекта.
Да и зачем мне моделировать, если у меня все проекты работают...:)


yg   (2004-10-26 11:39:00) [4]

>Johnmen
Я привел упрощенный код, а так я конечно обрабатываю исключения. Но проблема-то не исчезает. Вы попробуйте смоделировать - увидите сами.
>stone
Я не администратор, а программист. А вот люди, которые за тем компом сидят, очень любят его перегрузить и хотят, чтобы потом все работало :)))


stone   (2004-10-26 11:15:00) [5]


> yg ©  

А с какого перепуга у тебя сервер периодически останавливается? Может лучше эту проблему решить?


Johnmen   (2004-10-26 11:14:00) [6]

После первого шага (обработав исключение) надо отключиться (Close коннекта)
На втором - сначала подключиться, а потом повторить попытку (обрабатывая исключения)

>Вопрос: ПОЧЕМУ?

Т.е. почему причины исчезли ? :)))


yg   (2004-10-26 11:07:00) [7]

ЕЩЕ РАЗ:
1 шаг. Сервер остановлен. Пробуем обратиться:
На Set1.Open возникает исключение:
TOleException: ошибка подключения
2 шаг. Сервер работает. Еще раз пробуем обратиться: Исключение повторяется, хотя причины для него исчезли. Вопрос: ПОЧЕМУ?

PS: Если что-то непонятно в постановке вопроса, задавайте дополнительные вопросы.


Johnmen   (2004-10-26 11:00:00) [8]

Конкретизируйвопрос.


yg   (2004-10-26 10:58:00) [9]

Хорошо, а по самому вопросу: как победить?


Johnmen   (2004-10-26 10:53:00) [10]

1. try <выполнить запрос> except <отключаемся> end
  ...
  try <подключиться,выполнить запрос>
  except <...>
  end

Вобщем все обломы надо обрабатывать самому...


yg   (2004-10-26 10:48:00) [11]

>>1. Учитывать текущую доступность выполнения запросов.
А можно кусочек кода, который это демонстрирует.

>>3. Иметь возможность повторить сохранение "накопленных данных".
Собственно проблема именно в последнем пункте!!!
Еще раз:
1 шаг. Сервер остановлен. Пробуем обратиться: Облом. Понятно.
2 шаг. Сервер работает. Еще раз пробуем обратиться: Облом по той же причине!
Мне так кажется, что где-то в буфере или коллекции ошибок соединения осталась информация об ошибке. Этот буфер не очищается. И ошибка эта будет повторяться до посинения, пока не перезапустишь программу.


Johnmen   (2004-10-26 10:36:00) [12]

1. Учитывать текущую доступность выполнения запросов.
2. Обрабатывать ошибки.
3. Иметь возможность повторить сохранение "накопленных данных".


yg   (2004-10-26 10:32:00) [13]

Человек вбивает анкету. Не могу же я незаполненную до конца анкету через каждые 5 секунд сливать на сервер...


Johnmen   (2004-10-26 10:23:00) [14]

Копить не надо.


Наверх

Титульная страница Поиск, карта сайта Написать письмо