Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Dead connection
|
|||
|---|---|---|---|
|
#18+
Можно ли в ADO или OLEDB проверить реальное состояние коннекта ? Не делая пробных действий типа выполнения коротких запросов и т.д. Насколько я знаю, в DBLibrary есть функция dbdead - вот хотелось бы ее аналог найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2001, 10:14 |
|
||
|
Dead connection
|
|||
|---|---|---|---|
|
#18+
По-моему в Connection или/и Recordset есть свойство State. Насколько достоверную информацию возвращает - не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2001, 10:31 |
|
||
|
Dead connection
|
|||
|---|---|---|---|
|
#18+
Среди возможных вариантов состояния коннекта нет понятия "invalid". adStateClosed adStateOpen adStateConnecting adStateExecuting adStateFetching Так вот, если коннекция была открыта нормально, а потом что-то случилось с сервером - застопили сиквел, нарушена физическая связь с машиной, где стоит сиквел и т.д., то состояние как было adStateOpen, так и останется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2001, 10:46 |
|
||
|
Dead connection
|
|||
|---|---|---|---|
|
#18+
по-моему dbdead "делал пробные действия типа выполнения коротких запросов". Во всяком случае в 4-м и 6.5 в EM перед выполнением запроса пользователя посылался запрос select "Test connection" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2001, 10:54 |
|
||
|
Dead connection
|
|||
|---|---|---|---|
|
#18+
Поиск по МСДН по "DBPROP_CONNECTIONSTATUS" дал в том числе документ, содержащий следующее: "...Providers that connect to a remote database and can detect whether or not that connection may be lost should support the DBPROP_CONNECTIONSTATUS property. This property gives the OLE DB services the ability to detect ==dead connections== and ensure that they are not returned to the pool...." Я сам подробно не изучал, правда. Это из OLE DB Programmer's Ref. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2001, 20:01 |
|
||
|
Dead connection
|
|||
|---|---|---|---|
|
#18+
2 GreenSunrise А зачем, вам это нужно? Открылся коннект - хорошо, не прошла какая либо команда - отловили ошибку, описание которой показали на экране. В чем собственно проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2001, 05:24 |
|
||
|
Dead connection
|
|||
|---|---|---|---|
|
#18+
2 SergSuper: честно говоря, я не знаю, как работает dbdead Мне про нее просто сказал человек, который писал на dblibrary, так что Ваше сообщение очень интересно. 2 skv@analyst.ru: спасибо, поищу, почитаю... 2 Genady: проблема выглядит вот как. В программе есть несколько SQL коннектов с длительным временем жизни. Если в какой-то момент происходит ошибка, то надо коннект закрыть/открыть и попробовать повторить операцию. Вопрос в том, кто будет осознавать, какая именно ошибка произошла - то ли это неправильный сиквельный запрос (неверный синтаксис, неправильные данные, key violation и т.д.), то ли это коммуникационная ошибка. В первом случае коннект трогать не надо, во втором - надо. Разделение ошибок по кодам - вещь весьма сомнительная. Хотелось бы иметь возможность понять, что виноват не запрос, а коннект. Поскольку объекты имеют большую длительность жизни, то web-подход "получил коннект, выполнил операцию, отвалился" здесь не прокатывает. И еще - в программе наряду с выполнением пользовательских запросов идут фоновые операции в отдельных потоках. Они тоже имеют свои коннекты и пользуются ими постоянно. В этом случае также хотелось бы уметь осознать, что связь порвалась и через некоторое время попробовать ее восстановить. Примерно так. Если что-то непонятно написано или надо поподробнее - скажите, я напишу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2001, 08:18 |
|
||
|
Dead connection
|
|||
|---|---|---|---|
|
#18+
2 GreenSunrise Понятно Я бы на Вашем месте все же ловил ошибку по ее коду, если я не ошибаюсь в случае разрыва связи генерится только одна ошибка, посмотрите ее номер и отлавливайте по нему. >Разделение ошибок по кодам - вещь весьма сомнительная. Почему? Нормально все отлавливается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2001, 09:04 |
|
||
|
Dead connection
|
|||
|---|---|---|---|
|
#18+
Гм. Я вот насчет разделения ошибок. Дохлый коннект - когда недоступен сервер физически, когда нет такой базы (ну вот долбанули ее, или она сейчас в single mode, или suspend, или права доступа для логина поменяли, или ...) - короче, много вариантов наклевывается с многими кодами ошибок. Мне не хочется ЯВНО прописывать их в здоровенном switch - может, я ошибаюсь, но это порочный путь. Возможно, я остановлюсь на следующем способе - при анализировании error в коллекции пришедших ошибок смотреть, какой объект является инициатором. Если Connection, то сразу считать, что коннект протух и переходить к close/open, если Command, то это нормально и коннект не трогать. Вот еще подумаю немного... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2001, 10:02 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32013451&tid=1825640]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 384ms |

| 0 / 0 |
