O tempo limite não está sendo respeitado na string de conexão
-
09-06-2019 - |
Pergunta
Tenho uma instrução SQL de longa execução que desejo executar e, não importa o que coloquei na cláusula "timeout =" da minha string de conexão, ela sempre parece terminar após 30 segundos.
Estou apenas usando SqlHelper.ExecuteNonQuery()
para executá-lo e deixá-lo cuidar da abertura de conexões, etc.
Há algo mais que poderia substituir meu tempo limite ou fazer com que o SQL Server o ignorasse?Executei o profiler na consulta e o rastreamento não parece diferente quando o executo no Management Studio e no meu código.
O Management Studio conclui a consulta em aproximadamente um minuto, mas mesmo com um tempo limite definido como 300 ou 30.000, meu código ainda expira após 30 segundos.
Solução
O que você está usando para definir o tempo limite na sua string de conexão?Da memória, isso é "ConnectionTimeout" e afeta apenas o tempo que leva para realmente conectar para o servidor.
Cada comando individual possui um "CommandTimeout" separado, que é o que você está procurando.Não tenho certeza de como o SqlHelper implementa isso.
Outras dicas
Além do tempo limite na string de conexão, tente usar a propriedade timeout do comando SQL.Abaixo está um exemplo de C#, usando a classe SqlCommand.Seu equivalente deve ser aplicável ao que você está usando.
SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();