Usuário com melhor resposta
[RESOLVIDO] Tempo limite expirou.

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
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
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
-
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