Текущий архив: 2004.09.19;
Скачать: CL | DM;
Вниз
Объясните мне работу АДО-соединений, а то там фигня какая-то... Найти похожие ветки
← →
Aleksandr. (2004-08-18 19:54) [0]Суть задачи в том, чтобы в программе соединения работали только на период реального обращения к таблице, так как SQL-Server периодически отрубается на бэкап и все соединения разрушаются (я писал по этому поводу запрос). Стал высматривать, в каких участках кода у меня остаются открытые соединения.
Создаю ADOConnection, ставлю ему KeepConnection=false, создаю ADOQuery, ему в Connection ставлю этот ADOConnection, делаю SQL.Add(), открываю, смотрю при этом через Process Explorer на TCP - полная фигня творится. Еще во время SQL.Add появляется порт на Listened, затем при открытии появляется еще порт на Listened и на этот же порт Established. Потом закрываю ADOQuery - тот порт, на котором было Listened и Established, через некоторое время из списка пропадает, а первый так и остается висеть. Что это за нафиг и как с ним бороться?
← →
surkis (2004-08-18 20:30) [1]> Что это за нафиг и как с ним бороться?
А чего с ним бороться? Зачем тебе постоянно держать ADOConnection открытым? Когда закрываешь ADOQuery, закрывай ADOConnection, а перед открытием ADOQuery открываешь ADOConnection
← →
Aleksandr. (2004-08-18 20:37) [2]surkis (18.08.04 20:30) [1] :
Так мне как раз и не надо, чтобы соединение оставалось открытым. Речь как раз о том и идет, что появляются слушалки двух портов при работе с ADO, из которых исчезает по закрытии только одна.
← →
KSergey © (2004-08-19 07:22) [3]Я пнимаю так. Вы немного слишком плотно к задаче подошли.
Query отработал?
Connection отрубился (Close вызван)?
Ну и чудненько! И не хай себе сервер рубится на бэкап или что там еще. А какие там порты или что еще - боюсь, нифига тут не поделать. На кой порты-то сдались?
← →
jocko (2004-08-19 09:31) [4]если можно - поподробнее, причем здесь TCP?
насколько я понимаю на сервере остаются незакрытые процессы, список которых видно хотябы через sp_who2, не уверен, возможно, бэкап их завершает, так вот при чем здесь порты?
И главное - в чем вообще проблема, обработай ошибку и создай новое соединение.
← →
Aleksandr. (2004-08-19 14:18) [5]Попытаюсь раскрыть суть трабла истчо детальнее. Когда при добавлении в Query текста запроса появляется левая, неубирающаяся "слушалка", все последующие добавления текстов в запросы начинают "ходить" через нее. То есть если я создам истчо одну пару Connection-Query, они отработают и закроют свои порты, но при при добавлении текста в их запросы на каком-то уровне происходит работа с этой слушалкой, и при отключенном MS SQL Server это приводит к ошибке, определяемой как "Неизвестная ошибка". То есть даже при включении сервера эта слушалка остается висеть сломанной и даже при наличии нормальных коннектов от ADOConnection попытки хотя бы добавить текст в запрос приводят к исключительной ситуации. Так что нет проблем отработать ошибку с созданием управляемого соединения, но никак не могу убрать из системы созданное на другом уровне служебное соединение, через которое АДО пытается толкнуть какие-то свои заморочки.
← →
KSergey © (2004-08-19 14:29) [6]Я правда не сталкивался именно с такой ситуацией...
Но если делать так:
1.подключиться клиетном к серверу
2.выполнить запрос
3.закрыть соединение
4.перезапустить сервер
5.подключиться клиетном к серверу
6.выполнить запрос
7.закрыть соединение
Неужели после п.4 не удасться соединиться? Не проверял, признаться, но что-то не очень верится в такое...
← →
Aleksandr. (2004-08-19 16:13) [7]KSergey © (19.08.04 14:29) [6]:
Ну я же несколько раз объяснил, что соединение через Connection работает, но в программе остаются висеть какие-то сломанные служебные соединения, от которых невозможно избавиться!
← →
KSergey © (2004-08-19 21:06) [8]> [7] Aleksandr. (19.08.04 16:13)
> но в программе остаются висеть какие-то сломанные
> служебные соединения, от которых невозможно избавиться!
Но чем они мешают - можно узнать??
Страницы: 1 вся ветка
Текущий архив: 2004.09.19;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.031 c