![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с ADO на клиенте [D6, MSSQL]
Overstep © (2003-12-12 17:57:00)
Добрый день всем. Подскажите пожалуйста, где рыть в такой ситуации. На сервере с помощью хранимых процедур, которые вызываются на клиенте шерстица таблица и при соответствии спецификации строки инсертом формируют другую таблицу. Всего в результирующей таблице получается 180000 записей. Все соединения сделаны с помощью ADO и ODBC алиаса. Короче, гдето на 63000 записей выкидывает ошибку (ODBC)Timeout connection. На сервере или с BDE все проходит без ошибок.
asafr (2003-12-18 17:53:00) [1]
ODBC в этой связке точно лишняя...
sniknik (2003-12-18 16:39:00) [2]
> то программа висит пока тот не закончит свою работу
почитай пр асинхронное выполнение/получение данных.
TExecuteOption = (eoAsyncExecute, eoAsyncFetch, eoAsyncFetchNonBlocking, eoExecuteNoRecords);
Overstep (2003-12-18 16:34:00) [3]
С сетью все нормально, иначе совсем не работало бы. Конечно более конкретный вопрос я задам, когда больше вникну в текст хранимой процедуры. А сейчас мне хотелось бы узнать, почему когда запускается хранимая процедура через ADO компонент, то программа висит пока тот не закончит свою работу. Ведь все вычисления происходят на сервере.
Я вообще в шоке. Программу делал не я, но мне её теперь надо оптимизировать. Я смотрел только что Task Manager. Так вот программа отжирает около 80% процессорного времени в неактивном режиме, а когда заходишь в меню или запускаешь хранимую процедуру то нормально 0%.
Подскажите пожалуйста.
KSergey (2003-12-16 15:59:00) [4]
Наилучшие статьи по ADO - на "королевстве" (цикл из 3-х статей в Hello, World)
А для настройки клиента/сервера используем Client Network Utility и Server Network Utility. К стати, Client Network Utility имеется всегда, идет с ADO, просто запустить файл cliconfg.exe (где-то в виндах сидит)
А с родным (без ODBC-обертки) работает отлично.
sniknik (2003-12-16 15:53:00) [5]> Не знаю почему, но у нас с ним работа по сети плохо идет(вообще не работает).
может вы там поубирали/поперенастраивали протоколы? в сетевых утилитах. либо у вас сеть работаен не на TCP/IP а на IPX/SPX? а в MSSQL не указано?
> По умолчанию не годиться.
сомневаюсь в этом сильно, скорее наоборот плохо потому что поменяли.
http://www.delphimaster.ru/cgi-bin/download.pl?look=1&id=1069281940&n=1
закачай демо отсюда, попробуй в нем. там все на дефаултах. т.е. не должно от твоего отличатся если сеть виновата. если отличается то см. свою программу.
(строку подключения после покажи, единственное что там задается и может влиять)
> нормальную литературу по настройке ADO
а такая есть? чисто по настройкам? еще раз, сомнительно это.
Overstep (2003-12-16 15:27:00) [6]
Я посредников пробовал убирать, то есть через OLE DB Provider for SQL Server. Не знаю почему, но у нас с ним работа по сети плохо идет(вообще не работает). Может подскажите нормальную литературу по настройке ADO. По умолчанию не годиться.
sniknik (2003-12-15 14:13:00) [7]
убери ODBC из связки, конектся сразу к MSSQL. (зачем посредники?)
> Я в настройках ODBC ничего не нашел.
там есть Long Query Time параметр = 30000 милисек. по дефаулту (это единственное где видел время упоминается), и если включена запись в лог.
Overstep (2003-12-15 14:05:00) [8]
CommandTimeout увеличивал(*2), но не помогло, ошибка иногда выдается раньше, чем выставленное время в CommandTimeout. И все же почему оно упоминает про ODBC в сообщении. Я в настройках ODBC ничего не нашел.
Silver Alex (2003-12-12 18:06:00) [9]
попробуй поменять CommandTimeout на большее значение