![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]Копить не надо.