none
[RESOLVIDO] Tempo limite expirou. RRS feed

  • Pergunta

  • Olá amigos, 

    Estou com um problema estranho. Vi algumas respostas referente ao assunto aqui no fórum, mas nenhuma respondeu a minha duvida.

    Minha aplicação retorna dados em um GridView. Faço as queries e preencho um DataTable que funciona perfeitamente.
    O problema está acontecendo em uma função que é quase a mesma coisa, porém está dando a Exceção que o tempo expirou.
    Como pode em uma função funcionar perfeitamente, e na outra não!?

    Segue abaixo o código da função que funciona perfeitamente:

                try
                {
                    cmd = new SqlCommand(query, conn);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
    
                    SqlParameter p1 = new SqlParameter();
                    p1.ParameterName = "@c2tbl67";
                    p1.Direction = ParameterDirection.Input;
                    p1.Value = tr.c2tbl67;
                    cmd.Parameters.Add(p1);
    
                    SqlParameter p2 = new SqlParameter();
                    p2.ParameterName = "@c5tbl67";
                    p2.Direction = ParameterDirection.Input;
                    p2.Value = tr.c5tbl67;
                    cmd.Parameters.Add(p2);
    
                    conn.Open();
                    DataTable dt = new DataTable();
                    da.Fill(dt);
    
                    cmd.Dispose();
                    conn.Close();
                    return dt;
                }

    Aqui o código da função que está dando o erro:

                try
                {
                    cmd = new SqlCommand(query, conn);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
    
                    SqlParameter p1 = new SqlParameter();
                    p1.ParameterName = "@c2tbl26";
                    p1.Direction = ParameterDirection.Input;
                    p1.Value = tr.c2tbl26;
                    cmd.Parameters.Add(p1);
    
                    SqlParameter p2 = new SqlParameter();
                    p2.ParameterName = "@c5tbl26";
                    p2.Direction = ParameterDirection.Input;
                    p2.Value = tr.c5tbl26;
                    cmd.Parameters.Add(p2);
    
                    conn.Open();
                    DataTable dt = new DataTable();
                    da.Fill(dt);
    
                    cmd.Dispose();
                    conn.Close();
                    return dt;
                }

    Pelo que eu pude ver, o erro ocorre na linha:

    da.Fill(dt);

    Alguém consegue me ajudar e dizer o por que numa função ele funciona perfeitamente e na outra que é praticamente igual, não funciona?

    A query está funcionando perfeitamente, já fiz o teste no banco de dados e retorna o resultado perfeitamente.

    Obrigado!


    Cleverson Darsie


    • Editado Cleverson Darsie terça-feira, 12 de novembro de 2013 17:16 Finalizado
    terça-feira, 12 de novembro de 2013 14:50

Respostas

  • O problema nao é o codigo que vc postou. Este problema esta na "query" que vc nao postou.

    O que ocorre é que devido a complexidade da query ela ultrapassa o limite de tempo padrao (que é de 30 segundos)... vc tem duas alternativas: ou aumenta o limite de tempo ou analisa a query para ver se  passivel de otimizaçao (inclusao de indices, por exemplo)

    Para umentar o tempo, faça:

    cmd.CommandTimeout = 120;//tempo em segundos, neste caso aumenta para dois minutos
    

    Insira est alinha após:

    cmd = new SqlCommand(query, conn);

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Sugerido como Resposta Giovani Cr terça-feira, 12 de novembro de 2013 16:39
    • Marcado como Resposta Cleverson Darsie terça-feira, 12 de novembro de 2013 17:16
    terça-feira, 12 de novembro de 2013 15:01
    Moderador

Todas as Respostas

  • O problema nao é o codigo que vc postou. Este problema esta na "query" que vc nao postou.

    O que ocorre é que devido a complexidade da query ela ultrapassa o limite de tempo padrao (que é de 30 segundos)... vc tem duas alternativas: ou aumenta o limite de tempo ou analisa a query para ver se  passivel de otimizaçao (inclusao de indices, por exemplo)

    Para umentar o tempo, faça:

    cmd.CommandTimeout = 120;//tempo em segundos, neste caso aumenta para dois minutos
    

    Insira est alinha após:

    cmd = new SqlCommand(query, conn);

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Sugerido como Resposta Giovani Cr terça-feira, 12 de novembro de 2013 16:39
    • Marcado como Resposta Cleverson Darsie terça-feira, 12 de novembro de 2013 17:16
    terça-feira, 12 de novembro de 2013 15:01
    Moderador
  • Olá William, 

    Você está correto!
    Analisando a query, vi que não estava correta mesmo. 
    Ela está demorando um pouco mais do que o normal para finalizar.

    Vou fazer a alteração na query e por pra rodar.

    A parte do código que você informou funcionou.

    Obrigado.


    Cleverson Darsie

    terça-feira, 12 de novembro de 2013 17:16