![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
@@spid и PacketRecords [D7, MSSQL]
Sedunov Vitaly © (2003-10-07 09:10:00)
Доброо времени суток! У меня возникла следующая проблема: использую ADODataSet -> DataSetProvider -> ClientDataSet. ADOConnection устанавливается только 1 раз. Этому коннекту присваивается свой идентификатор (@@spid). Как только я испозую порционную подкачку в ClientDataSet, то запрос select @@spid на сервере выдает значение, отличное от изначального @@spid. После прекращения порционной подкачки (как только весь набор данных передан на клиента), то значение @@spid становится таким же, как было изначально. Вопрос: как во время порционной подкачки узнать @@spid начального коннекта? Спасибо.
Sedunov Vitaly (2003-10-07 16:28:00) [1]
Не помогли никакия играния с параметрами. Переделал я немного этот алгоритм и завался на system_user. Он для основного коннекта и "виртуального" один и тот же. Да, кто бы знал, что при порционной подкачке создается еще один коннект...
Всем огромное спасибо!
Polevi (2003-10-07 16:05:00) [2]
мистика какаято
не знаю что и посоветовать, попробуй поиграть с параметрами подключения ADOConnection, там чтото есть с кешированием соединений
Sedunov Vitaly (2003-10-07 15:58:00) [3]
Делал. Эффект такой же...
Polevi (2003-10-07 15:50:00) [4]
клиентский сделай и доложи :-)
Sedunov Vitaly (2003-10-07 15:08:00) [5]
Курсор у ADODataSet серверный.
Polevi (2003-10-07 14:32:00) [6]
курсор какой у рекордсетов
Sedunov Vitaly (2003-10-07 14:27:00) [7]
ShowMessage вылезает один раз. Уже все такие штуки перепробовал. Коннект происходит один раз. Второй коннект (который 64) даже не виден в таблице master.dbo.sysprocesses. У 60-го только меняется поле sql_handle. Как только порционная подкачка прекращена, поле sql_handle для spid=60 обнуляется.
Polevi (2003-10-07 14:20:00) [8]
ShowMessage в BeforeConnect поставь, чудес то не бывает
Sedunov Vitaly (2003-10-07 14:01:00) [9]
Зацепился. Ситуация подробнее.
1. ADOConnection.Connected=true
2. select @@spid = 60
3. активизация ClientDataSet, который через DataSetProvider сцеплен с ADODataSet, у ClientDataSet свойство PacketRecords=100, кол-во записей>1000
4. select @@spid = 64
5. а) ClientDataSet.Active=False или б) выкачать весь набор данных на клиента
6. любое действие в пункте 5 дает select @@spid = 60,т.е. изначальному значению.
ADOConnection.Connected устанавливается только один раз и никаких дополнительных коннектов и переконнектов нет.
KSergey (2003-10-07 13:32:00) [10]
Вероятнее всего, вы все же не зацепилсь за исходный ADOConnection.
А все ADO-шные компоненты, как известно, очень даже умеют цепляться за сервер самостоятельно.
Sedunov Vitaly (2003-10-07 13:18:00) [11]
Может. Я тоже был очень удивлен. Попробуйте сами!
Polevi (2003-10-07 10:00:00) [12]
этого не может быть :-)