![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не удаляется ADO соединение со стороны сервера MSSQL [D6, MSSQL]
Michael Makushev © (2006-08-23 17:14:00)постановка задачи такая:
есть поток в экземпляре которого есть ADO коннекшн и ADO запрос. Запускаем поток и в цикле (в execute) периодически "совершаем" запрос - например "SELECT @@SPID SID". Что будет выдаваться? правильно! один и тот же SID. Теперь если закрыть соединение, с ужасом обнаружим, что сервер его держит. А теперь номер на бис - если соединение уничтожить не уничтожая при этом поток - то оно все равно держиться сервером!!!
Кто нить сталкивался с подобными вещами? Как это можно обойти не уничтожая поток?
Anatoly Podgoretsky (2006-08-25 22:13:00) [1]Ega23 © (24.08.06 11:35) [4]
Полностью согласен с утверждением.
sniknik (2006-08-25 20:27:00) [2]AlexWlad © (25.08.06 18:36) [7]
>> sniknik © (24.08.06 11:34) [3]
> Не винда, а SQL-сервер.
читать умеем? читаем все! а не просим брата первоклашку прочитать только самые короткие фразы...
и потом, а что в [3] не так? по твоему значит винда реалтайм а mssql нет? (ну раз фраза "...винда не реалтайм..." вызвала возражение "Не винда, а SQL-сервер") ???
AlexWlad (2006-08-25 18:36:00) [3]
> sniknik © (24.08.06 11:34) [3]
Не винда, а SQL-сервер.
> Michael Makushev (23.08.06 17:14)
А что, сильно мешает такое поведение? Обоснуй.
Nikolay M. (2006-08-25 10:40:00) [4]
> А теперь номер на бис - если соединение уничтожить не уничтожая
> при этом поток - то оно все равно держиться сервером!!!
Более того, если выдернуть сетевой шнур, в sysprocesses данный SPID может еще какое-то время висеть. А самое веселье начинается, когда другой юзер подключится под тем же SPID-ом. Посмотри ссылк и обрати внимание на решение Павла.
http://www.sql.ru/forum/actualthread.aspx?tid=70061&pg=-1
> Как это можно обойти не уничтожая поток?
Что "ЭТО" и зачем?
sniknik (2006-08-24 11:40:00) [5]Ega23 © (24.08.06 11:35) [4]
я в смысле - если основа не гарантирует моментальной реакции то чего ждать от базирующихся на ней систем? любых.
Ega23 (2006-08-24 11:35:00) [6]
> но винда не реалтайм система. ;)
>
понятие real-time вообще бессмысленно для дискретных систем... :о)
sniknik (2006-08-24 11:34:00) [7]а смотриш естественно сразу после закрытия коннекта? в расчете на моментальную реакцию... но винда не реалтайм система. ;)
Michael Makushev (2006-08-24 11:29:00) [8]"ужас" обнаруживается по двум признакам по выборке записей из master-a по sysprocess. или по "Exec sp_who", на момент закрытия и разрушения там остаются процессы связанные с подключением
sniknik (2006-08-23 18:12:00) [9]> Теперь если закрыть соединение, с ужасом обнаружим, что сервер его держит.
по каким признакам этот "ужас" обнаруживается?...
сделал проверку, открываю коннект делаю запрос (SELECT @@SPID SID)
получаю 51 (ну и в цикле естественно один и тот же)
делаю закрытие коннекта, тут же открытие (не уничтожая ничего, ни потока ни т.д.)
повторяю запрос SID = 52
опять закрываю, открываю, выполняю SID = 51
и т.д. 52, 51, 52, 51
(если конечно еще один не открыть, тогда в очередь еще 53 вмешивается)
вывод? не держит он его, просто при выдаче SPID - а коннекту, сразу формируется новое значение для следующей выдачи, и там уж закрылось предыдущее нет оно и выдается.