Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
4-45634
Dmitriy Polskoy
2002-08-28 16:24
2002.10.14
WaitForSingleObject


3-45217
dmitry_k
2002-09-23 00:07
2002.10.14
EmptyTable


1-45450
Олега
2002-10-03 15:56
2002.10.14
Можно ли с помощью ShellExecute пославить письмо с HTML?


14-45591
DeMoN-777
2002-09-21 09:35
2002.10.14
ATX или AT


14-45576
NetBreaker666
2002-09-16 18:46
2002.10.14
Проблема с ActiveX ->TTreeView.. ПОМОГИТЕ !!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский