Форум: "Базы";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
ВнизУпраление соединениями на MS SQL Server Найти похожие ветки
← →
GrBob (2007-01-18 11:39) [0]Мастера, кто-нибудь когда-нибудь интересовался принципами, на которых основывается коннект на MSSQL-сервере. Как определяется его состояние, как происходит определение разрыва соединения, чтобы коннект удалить (например, если клиентский процесс просто вышибли)? Интересны любые ссылки по этому поводу.
← →
ЮЮ © (2007-01-18 11:45) [1]
> чтобы коннект удалить (например, если клиентский процесс
> просто вышибли)?
Если переписываешь MS SQL серевер, то у тебя должны быть исходники :) Чем и что ты намерен удалять?
> как происходит определение разрыва соединения,
Со стороны клиента - при попытке выполнения запроса в рамках этого соединения. Лучше самого легкого.
Со стороны сервера - исходники у тебя :)
← →
GrBob (2007-01-18 11:56) [2]Исходников у меня нет :) Меня просто заинтересовал только этот момент.
Удалить = убить, закрыть, освободить...
Интересно именно со стороны сервера.
← →
ЮЮ © (2007-01-18 12:05) [3]Interprise Manager c этим справляется, значит возможно.
в BOL:
Monitoring with SQL Server Enterprise Manager
как он это делает и что можно сделать
← →
Ega23 © (2007-01-18 12:13) [4]
> Monitoring with SQL Server Enterprise Manager
Да, вот только делает он это по запросу. Т.е. один фиг нужен сервис, который пинг осуществляет.
Эх, вот если бы у ADOConnection было событие о разрыве соединения....
← →
ЮЮ © (2007-01-18 12:23) [5]
> Т.е. один фиг нужен сервис, который пинг осуществляет.
>
Так один фиг нужен "убийца процессов", который будет делать то, что даже MS SQL серверу не очень-то, похоже, нужно.
← →
GrBob (2007-01-18 13:12) [6]Каждый коннект обрабатывается в отдельном потоке, а не в процессе, поэтому непонятно, почему в EM написано "Kill Process".
Есть "сервис, который пинг осуществляет", он же "убийца процессов", он же собственно сам сервер, который реагирует на запросы клиентов. Пока непонятно, кто в этом случае инициализирует пинг-понг, сервер отправляет всем клиентам с нектороым периодом сообщения и ждет ответ или просто следит за активностью клиента, дергается он или нет? Оба варианта как-то сомнительны, может используется какой-то другой способ?
Как действует "убийца" мне не так интересно. Enterprise Manager отправляет серверу запрос "KILL N", где N - SPID процесса, дальше дело техники найти его серверу и грохнуть, особенно если у него хранятся ссылки на все потоки.
← →
Ega23 © (2007-01-18 13:15) [7]
> Как действует "убийца" мне не так интересно. Enterprise
> Manager отправляет серверу запрос "KILL N", где N - SPID
> процесса, дальше дело техники найти его серверу и грохнуть,
> особенно если у него хранятся ссылки на все потоки.
>
Но что дальше-то? Вот я убил процесс на сервере (не важно как - через EM, скриптом или ещё как-то).
Что дальше должно произойти?
← →
ЮЮ © (2007-01-18 13:21) [8]Так ты сам хочешь чистить "мертвые" соединения или тебя просто интересует, почему на сервере их нет, в то время как твои клиенты мрут как мухи, не разравая соединение? :)
← →
GrBob (2007-01-18 13:36) [9]
> Что дальше должно произойти?
А что обычно происходит, когда соединение убито на сервере? Либо клиент долбится никуда плодя гору исключений, либо нормально отрабатывает эту ситуацию и переподключается или забивает на это дело. Реализация клиента меня интересует не так сильно.
> Так ты сам хочешь чистить "мертвые" соединения или тебя
> просто интересует, почему на сервере их нет, в то время
> как твои клиенты мрут как мухи, не разравая соединение?
> :)
Меня интересует, как сервер поддерживает соединение и следит за клиентами :)
← →
Ega23 © (2007-01-18 14:32) [10]
> А что обычно происходит, когда соединение убито на сервере?
> Либо клиент долбится никуда плодя гору исключений, либо
> нормально отрабатывает эту ситуацию и переподключается или
> забивает на это дело. Реализация клиента меня интересует
> не так сильно.
После полуторанедельного мозгового штурма как быть в такой ситуации, решили реконнект не делать. Сразу аварийный останов.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c