Добрый день.
Я вызываю хранимую процедуре в коде на 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 означает бесконечное ожидание.