как изменить ConnectionTimeOut в TSQL.... компонентах

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

как изменить ConnectionTimeOut в TSQL.... компонентах

Сообщение jsa » 26.10.2021 08:44:24

Здравствуйте.
Не могу найти как в Lazarus в компонентах TSQL... изменить время ожидания выполнения запроса.
Нагуглить смог только для TADO... компонент.
например
TADODataSet(ADOStoredProc1).CommandTimeout := 30000;

Я так понял аналогичный TSQLDataSet отсутствует.

Подскажите пожалуйста.
jsa
постоялец
 
Сообщения: 266
Зарегистрирован: 28.11.2017 13:46:04

Re: как изменить ConnectionTimeOut в TSQL.... компонентах

Сообщение Снег Север » 26.10.2021 12:34:25

Это как где. Для мускула выставляется в параметрах соединения, например, для текущей сессии.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3006
Зарегистрирован: 27.11.2007 16:14:47

Re: как изменить ConnectionTimeOut в TSQL.... компонентах

Сообщение jsa » 27.10.2021 06:51:04

Снег Север писал(а):Это как где. Для мускула выставляется в параметрах соединения, например, для текущей сессии.

Мне нужно для MS SQL Server
Для MySQL это параметр в TMySQL**Connection ? или установка значения в первом запросе соединения?

Добавлено спустя 17 минут 4 секунды:
Поясню задачу.
Rest сервер написанный на Lazarus+Indy10 работает.
Параметры из URL строки или json из body передает в Хранимые процедуры, обратно получает json строку
Но 2 самых тяжелых POST запроса, стабильно отрабатывают только в часы низкой загрузки сервера. В часы пик ни ответа нет, ни соответственно нужных записей в базе не возникает.
Видимо соединение прерывается со стороны клиента из-за длительного времени выполнения.
Вот и ищу как увеличить время ожидания.
И получается это должна быть установка именно в компонентах TSQLConnection или TSQLQuery
jsa
постоялец
 
Сообщения: 266
Зарегистрирован: 28.11.2017 13:46:04

Re: как изменить ConnectionTimeOut в TSQL.... компонентах

Сообщение Снег Север » 27.10.2021 07:30:13

У коннекшена есть свойство параметры, там задаются параметры sql server connection string, которые не входят явно в пропертях. Для разных серверов они могут отличаться в названиях. Попробуйте там просто вписать CommandTimeout = ... сколько вам надо.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3006
Зарегистрирован: 27.11.2007 16:14:47

Re: как изменить ConnectionTimeOut в TSQL.... компонентах

Сообщение jsa » 27.10.2021 08:12:53

Точно! про это я не подумал.
Дописал
MSSQLConnect_thread.Params.Add('AutoCommit=true');
MSSQLConnect_thread.Params.Add('TextSize=16777216');
MSSQLConnect_thread.Params.Add('CommandTimeout=30');
MSSQLConnect_thread.Params.Add('ApplicationName='+AppName);

Буду тестировать.
Нагуглить удалось только варианты для IB/FB и MySQL там другой синтаксис параметра.
Спасибо!
jsa
постоялец
 
Сообщения: 266
Зарегистрирован: 28.11.2017 13:46:04

Re: как изменить ConnectionTimeOut в TSQL.... компонентах

Сообщение Vadim » 27.10.2021 16:28:53

jsa
MSSQL - штука хитрющая. Вдобавок, судя по Вашим словам, сервак сильно нагружен и ответ от него об истечении таймаута на сервере Вы просто не получите. Ведь Вы этот параметр пересылаете серверу, клиентский компонент тут не при делах. ;-)
Попробуйте поговорить с ним на его же языке:
Код: Выделить всё
SQLScript1.Script.Add('USE master;');
  SQLScript1.Script.Add('GO');
  SQLScript1.Script.Add('EXECUTE sp_configure '+#39+'remote query timeout'+#39+', 3600*24');
  SQLScript1.Script.Add('RECONFIGURE');
  SQLScript1.Script.Add('GO');
  SQLScript1.Execute;

У Вас, как минимум, должны быть права на возможность конфигурации.
Результат не гарантирую... :-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: как изменить ConnectionTimeOut в TSQL.... компонентах

Сообщение jsa » 03.11.2021 09:48:48

Vadim писал(а):MSSQL - штука хитрющая. Вдобавок, судя по Вашим словам, сервак сильно нагружен и ответ от него об истечении таймаута на сервере Вы просто не получите. Ведь Вы этот параметр пересылаете серверу, клиентский компонент тут не при делах. ;-)
Попробуйте поговорить с ним на его же языке:
...

В данном случае этот метод не нужен. Дело именно в клиенте (в сессии), т.к. множество основных клиентов работающих с этим сервером, вполне себе нормально ожидают ответа тяжелых/больших запросов .
jsa
постоялец
 
Сообщения: 266
Зарегистрирован: 28.11.2017 13:46:04


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru