Я думаю, что это эквивалент того, что делает source
.
import scala.sys.process._
//send file contents to sh for interpretation
val tester = "/bin/cat /path/trial.sh".#|("/bin/sh").lineStream
Конечно, все намного проще, если trial.sh
является исполняемым.
val tester = "/bin/sh -c /path/trial.sh".lineStream
Проблема с тайм-аутом заключается в том, что один из запросов занимает больше времени, чем должен.
В .Net есть 2 тайм-аута, насколько я знаю, тайм-аут соединения ( ConnectionTimeout Property ) и тайм-аут команды ( CommandTimeout Property ). Оба тайм-аута по умолчанию составляют 30 секунд.
Я рекомендую вам:
Принимая участие в вашем коде, изменение будет примерно таким:
try {
// Change CommandTimeout
DbContext.Database.CommandTimeout = 120;
// Rebuild Indexes
DbContext.Database.ExecuteSqlCommand("EXEC sp_MSforeachtable \"ALTER INDEX ALL ON ? REBUILD WITH (ONLINE=OFF)\"");
// Update Statistics
DbContext.Database.ExecuteSqlCommand("EXEC sp_updatestats;");
}
catch (Exception ex) {
result = ex.Message + Environment.NewLine + ex.StackTrace;
}
Вы можете взглянуть на эту статью, она объясняет хорошие сценарии возможных причин тайм-аута https : //stackoverflow.com/a/8603111/2654879 .
Надеюсь, этот ответ поможет вам в вашем случае.
С уважением,
JB