Добрый день.

 

Я вызываю хранимую процедуре в коде на C# (см. код ниже), который вызывается бизнес-процессом. Выполнение процедуры в целом длится около 10 минут, но при ее запуске через бизнес-процесс я получаю ошибку System.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired.

Не подскажете, как в коде на C# установить нужный мне timeout вызова процедуры?

 

StoredProcedure storedProcedure = new StoredProcedure(userConnection,"tsp_GenerateBillingReport");

            storedProcedure.PackageName = userConnection.DBEngine.SystemPackageName;

            storedProcedure.Execute(); 

 

Нравится

2 комментария

Игорь, общий тайм-аут для работы с базой для сайта задаётся в ConnectionStrings.config в свойстве CommandTimeout. А как запустить со своим тайм-аутом конкретный запрос вызова хранимки, см. пример тут:

StoredProcedure storedProcedure = new StoredProcedure(userConnection, "tsp_Test");
storedProcedure.PackageName = userConnection.DBEngine.SystemPackageName;
using (var dbExecutor = userConnection.EnsureDBConnection()) {
   try {
       dbExecutor.CommandTimeout = 0;
       dbExecutor.StartTransaction();
       storedProcedure.Execute(dbExecutor);
       dbExecutor.CommitTransaction();
       return "OK";
   } catch {
       dbExecutor.RollbackTransaction();
       return "NOT OK";
   }
}

0 означает бесконечное ожидание.

Зверев Александр,

 Большое спасибо за Ваш ответ.

Показать все комментарии

Добрый день!

При импорте огромного количества записей Excel в BPMOnline 7.6 (около 100000) возникает ошибка "Query execution timed out". Возможно ли решить данную проблему для импорта всех записей в одном файле?

Нравится

3 комментария

Илья, здравствуйте!

Ошибка означает, что отправили запрос и не дождались ответа от сервера. В результате приложение «свалилось» по таймауту.
В данном случае можно поступить следующим образом:

- обновиться до 7.7 (был оптимизирован процесс импорта);
- разбить файл для импорта на несколько частей (примерно по 2000 – 10000 записей).

Спасибо, Илья. Но ни один вариант мне не подходит. Так как импорт 100 тыс.записей - это тестовый, а реальный может и 500 тыс. достигать.

"Чубко Илья" написал:

Спасибо, Илья. Но ни один вариант мне не подходит. Так как импорт 100 тыс.записей - это тестовый, а реальный может и 500 тыс. достигать.

____________________________

С уважением, Чубко Илья

Илья, здравствуйте!

К сожалению, в приложении до версии 7.6 не позволяет загружать файл с большим объемом.
пользовтель Мотков Илья Вам предложил несколько вариантов.
Других вариантов на данный момент нет. Вы можете реализовать собственный импорт (например, с помощью SQL загружать на прямую в БД).

Показать все комментарии

Для того чтобы продлить сессию пользователя, необходимо внести изменения в пул самого положения (IIS), а также в файлы web.config в корне сайта и его лоадера.

Для увеличения продолжительности сессии необходимо:

Увеличить продолжительность сессии на IIS сервере в настройках Application Pools:

IIS – Application Pool - Idle Timeout

Необходимо изменить в файле Web.config (он находится в папке сайта) следующие параметры –

system.web/authentication/forms - параметр timeout="…" - авторизационный

system.web/sessionState - параметр timeout="…" - сессионный

Аналогичное действие выполнить в файле Web.config, загрузчика приложения (папка Terrasoft.WebApp). Время указывается в минутах.

Прошу также обратить внимание на то что авторизационный параметр должен быть меньше чем сессионный, и сессионный должен быть такой же как и параметр на IIS сервере

Нравится

Поделиться

0 комментариев
Показать все комментарии