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.

Foi útil?

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();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top