none
Execução de ETL muito longa, dá timeout RRS feed

  • Pergunta

  • Olá pessoal.

    Tenho uma aplicação que funciona da seguinte maneira:
    - um usuário entra na aplicação
    - seleciona um job
    - clica em um botão pra executar

    Quando o usuário clica no botão, eu executo uma storedprocedure que dentro dela está configurado para rodar um ETL.

    Command.Connection = cnn;
    Command.CommandType = System.Data.

    CommandType.StoredProcedure;
    Command.CommandText = storedProc;
    Command.ExecuteNonQuery();


    O problema é que dependendo do ETL pode demorar horas!
    Isso tá retornando um erro de timeout (conhecido pelo número 12002).

    O ETL continua rodando, claro... Mas o problema é que eu a página aberta.

    Há alguma solução do tipo:
    executar a procedure de forma assíncrona e redirecionar para uma página de 'monitoração' e ficar aguardando (dando refresh) até ter o retorno de finalização?

    Se possível, alguém teria alguma dica?

    Agradeço desde já.

    sexta-feira, 4 de dezembro de 2009 17:36

Todas as Respostas

  • Olá,

    Dentro da ConnectionString no config da aplicação você possui uma propriedade chamada timeout, basta configurar lá. Como que sua aplicação procede enquanto espera este procedimento ? O Processamento é assincrono/MultiThread ?
    Nelson Borges - http://nelsonborgesjr.spaces.live.com/blog/ "Ao infinito e além.. "
    domingo, 6 de dezembro de 2009 02:42
  • Então...

    Não posso setar um tempo máximo de timeout...

    Já fiz a modificação e impactou MUITO em performance!!!

    Pois é... não é assíncrono...
    Gostaria que fosse!

    Alguma dica?
    domingo, 6 de dezembro de 2009 03:11