Добрый день.
Я вызываю хранимую процедуре в коде на 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();
Нравится
Игорь, общий тайм-аут для работы с базой для сайта задаётся в 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 означает бесконечное ожидание.