Вопрос

Timeout при вызове хранимой процедуры

Добрый день.

 

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

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

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

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