Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.14;
Скачать: CL | DM;

Вниз

ADOConnection   Найти похожие ветки 

 
Осирис ©   (2002-09-20 13:58) [0]

Выполняю сложный запрос к серверу. Кроме того что запрос сложный (со множеством группировок и join-ов) он еще и возвращает много данных. Где-то секунд через тридцать после query.open появляется сообщение, что время истекло.
Я всегда считал, что за это дело отвечает свойство CommandTimeout. Выставил его значение в 120. Запустил запрос - тоже самое - 30 секунд и все. В чем дело ?

И еще - свойства Mode и CursorLocation. Каким образом лучше их выставить с тем условем, что запросы только на выборку ?
Где нибудь можно найти информацию по сравнению зависимости времени выполнения запросов от этих свойств ?


 
passm ©   (2002-09-20 14:02) [1]

Наверняка в MS SQL имеется пираметр аналогичный CommandTimeout.
Попробуй поискать там.


 
sniknik ©   (2002-09-20 14:17) [2]

Дельфи 5й? поставь 6й и все апдейты ADO, тут уже проскакивало в старых версиях не устанавливался таймаут. Приходилось модуль править ADODB.


 
Осирис ©   (2002-09-20 14:19) [3]

Delphi 6.

>> Наверняка в MS SQL имеется пираметр аналогичный CommandTimeout.
Попробуй поискать там.

Сейчас попробую.


 
sniknik ©   (2002-09-20 14:34) [4]

можно попытатся в строке параметры прописать, не знаю получися ли но попробуй
Provider=SQLOLEDB.1;Persist Security Info=False;General Timeout=60;Connect Timeout=60;User ID=sa;Initial Catalog=345;Data Source=NIKS


 
Осирис ©   (2002-09-20 15:50) [5]

>> Наверняка в MS SQL имеется пираметр аналогичный CommandTimeout.

В MSSQL не нашел. Есть в QueryAnalizer (утилита для отладки запросов) - тут можно установить значение для текужего коннекта. Даже если бы это и бало в SQL - это не выход, так как этот период нужно увеличить лишь для конкретной проги, а не для всех, кто коннектится к серверу.

>> можно попытатся в строке параметры прописать, не знаю получися ли но попробуй
Provider=SQLOLEDB.1;Persist Security Info=False;General Timeout=60;Connect Timeout=60;User ID=sa;Initial Catalog=345;Data Source=NIKS

Не получается. Вписываю в ConnectionString вышеуказанную строку, говорю Connection:=true; Затем читаю ConnectionString - там осталось все кроме General Timeout=60;Connect Timeout=60;

PS. апдейтов ADO нету. Дома есть Delphi7 - приду проверю, как там с этим обстоят дела.


 
sniknik ©   (2002-09-20 17:13) [6]

в MS SQL имеется пираметр, плохо искал правда по умолчанию 600сек. должно хватать, переустановить на 800
EXEC sp_configure "remote query timeout", "800"
go
RECONFIGURE
go


 
Осирис ©   (2002-09-20 17:24) [7]

>>

в MS SQL имеется пираметр, плохо искал правда по умолчанию 600сек. должно хватать, переустановить на 800
EXEC sp_configure "remote query timeout", "800"
go
RECONFIGURE
go

Это я уже нашел. Можно сделать и так: щелкаем на сервер в EM, Свойства, Connections. По моему, это тоже самое.

Но как я уже сказал: это не выход, так как этот период нужно увеличить лишь для конкретной проги, а не для всех, кто коннектится к серверу.

>> Приходилось модуль править ADODB.

Не помнишь где и что ?



 
sniknik ©   (2002-09-20 17:32) [8]

подключаеш его в проект
и везде
меняеш
property CommandTimeout: Integer read GetCommandTimeout write SetCommandTimeout default 60;
дефаулт, кстати похоже это у меня тоже изменено 30сек было в оригинале или чтото с памятью моей стало?
можно просто переприсвоить перед подключением.

но здесь говорят это хакерские методы не рекомендуемые к использованию :-))


 
Balu ©   (2002-09-21 10:29) [9]

Берешь TADOCommand.

Настраиваешь ему ConnectionString
Provider=SQLOLEDB.1;....

CommandTimeout := 180; 3-и минуты

CommandText := "Твой запрос"

Execute;

Получаешь 3-и минуты (или сколько тебе надо) на выполнение запроса, без всяких "хакерских" штучек.


 
sniknik ©   (2002-09-21 12:22) [10]

вот вот про что я и говорил. не верят что это не всегда срабатывает. (глюк ADO? без апдейта) Balu © см. вопрос.


 
BlackTiger   (2002-09-21 15:38) [11]

У меня D6 - все таймауты вполне работают. Ставишь
CommandTimeout & ConnectionTimeout (оба!) в 0 и ждешь до опупения.


 
testpu   (2002-09-21 20:33) [12]

Аналогичная проблема у меня. Если на локальном компьютере стоит MS SQL, то все чики - пуки, а если на удаленном то та же ерунда.
Причем если после генерации исключения тут же попытаться еще раз законнектиться (не завершая программы), то коннектится с полпинка. Еще пробовал вместо имени сервера писать его Ip - шник. Тогда работает с первого раза.
Так что я думаю это проблемы с Windows овским DNS. Он почему- то не отрабатывает как нужно с первого раза.


 
wicked ©   (2002-09-21 21:15) [13]

странно....
у меня win98 se, delphi 5 sp2, mssql 7... свойство commandtimeout устанавливаю в 0 (ждать "вечно"), и всё работает...


 
sniknik ©   (2002-09-21 23:28) [14]

Да у меня тоже сейчас работает. Но в 5 дельфи было отказавалось менятся. Честное пречестное слово!!!



Страницы: 1 вся ветка

Текущий архив: 2002.10.14;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
1-45401
Dmitriy Polskoy
2002-10-03 10:37
2002.10.14
Так же как и FlashGet


6-45483
Ksion
2002-08-13 03:51
2002.10.14
TWebBrowser


1-45370
Pot
2002-10-06 14:37
2002.10.14
Печать графики


1-45371
blackweber
2002-10-05 20:03
2002.10.14
Кто-нить знает как определить значение какого ...


3-45226
AlexeyBl
2002-09-21 18:08
2002.10.14
Как поместить картинку в заголовок столбца TBDGrid ?