Форум: "Базы";
Текущий архив: 2002.10.14;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c