powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Dead connection
9 сообщений из 9, страница 1 из 1
Dead connection
    #32013257
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли в ADO или OLEDB проверить реальное состояние коннекта ? Не делая пробных действий типа выполнения коротких запросов и т.д.
Насколько я знаю, в DBLibrary есть функция dbdead - вот хотелось бы ее аналог найти.
...
Рейтинг: 0 / 0
Dead connection
    #32013451
skv@analyst.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По-моему в Connection или/и Recordset есть свойство State. Насколько достоверную информацию возвращает - не знаю.
...
Рейтинг: 0 / 0
Dead connection
    #32013455
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Среди возможных вариантов состояния коннекта нет понятия "invalid".
adStateClosed
adStateOpen
adStateConnecting
adStateExecuting
adStateFetching
Так вот, если коннекция была открыта нормально, а потом что-то случилось с сервером - застопили сиквел, нарушена физическая связь с машиной, где стоит сиквел и т.д., то состояние как было adStateOpen, так и останется.
...
Рейтинг: 0 / 0
Dead connection
    #32013456
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по-моему dbdead "делал пробные действия типа выполнения коротких запросов". Во всяком случае в 4-м и 6.5 в EM перед выполнением запроса пользователя посылался запрос select "Test connection"
...
Рейтинг: 0 / 0
Dead connection
    #32013476
skv@analyst.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поиск по МСДН по "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.
...
Рейтинг: 0 / 0
Dead connection
    #32013491
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 GreenSunrise

А зачем, вам это нужно? Открылся коннект - хорошо, не прошла какая либо команда - отловили ошибку, описание которой показали на экране. В чем собственно проблема?
...
Рейтинг: 0 / 0
Dead connection
    #32013509
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 SergSuper: честно говоря, я не знаю, как работает dbdead
Мне про нее просто сказал человек, который писал на dblibrary, так что Ваше сообщение очень интересно.
2 skv@analyst.ru: спасибо, поищу, почитаю...
2 Genady: проблема выглядит вот как. В программе есть несколько SQL коннектов с длительным временем жизни. Если в какой-то момент происходит ошибка, то надо коннект закрыть/открыть и попробовать повторить операцию. Вопрос в том, кто будет осознавать, какая именно ошибка произошла - то ли это неправильный сиквельный запрос (неверный синтаксис, неправильные данные, key violation и т.д.), то ли это коммуникационная ошибка. В первом случае коннект трогать не надо, во втором - надо. Разделение ошибок по кодам - вещь весьма сомнительная. Хотелось бы иметь возможность понять, что виноват не запрос, а коннект. Поскольку объекты имеют большую длительность жизни, то web-подход "получил коннект, выполнил операцию, отвалился" здесь не прокатывает. И еще - в программе наряду с выполнением пользовательских запросов идут фоновые операции в отдельных потоках. Они тоже имеют свои коннекты и пользуются ими постоянно. В этом случае также хотелось бы уметь осознать, что связь порвалась и через некоторое время попробовать ее восстановить.
Примерно так. Если что-то непонятно написано или надо поподробнее - скажите, я напишу.
...
Рейтинг: 0 / 0
Dead connection
    #32013512
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 GreenSunrise

Понятно
Я бы на Вашем месте все же ловил ошибку по ее коду, если я не ошибаюсь в случае разрыва связи генерится только одна ошибка, посмотрите ее номер и отлавливайте по нему.

>Разделение ошибок по кодам - вещь весьма сомнительная.
Почему? Нормально все отлавливается.
...
Рейтинг: 0 / 0
Dead connection
    #32013516
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм. Я вот насчет разделения ошибок. Дохлый коннект - когда недоступен сервер физически, когда нет такой базы (ну вот долбанули ее, или она сейчас в single mode, или suspend, или права доступа для логина поменяли, или ...) - короче, много вариантов наклевывается с многими кодами ошибок. Мне не хочется ЯВНО прописывать их в здоровенном switch - может, я ошибаюсь, но это порочный путь.
Возможно, я остановлюсь на следующем способе - при анализировании error в коллекции пришедших ошибок смотреть, какой объект является инициатором. Если Connection, то сразу считать, что коннект протух и переходить к close/open, если Command, то это нормально и коннект не трогать. Вот еще подумаю немного...
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Dead connection
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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