Posso aumentar o tempo limite modificando a string de conexão no web.config
?
c#
asp.net
sql-server
ado.net
zachary
fonte
fonte
Respostas:
Sim, você pode acrescentar
;Connection Timeout=30
à sua string de conexão e especificar o valor que desejar.O valor de tempo limite definido na
Connection Timeout
propriedade é um tempo expresso em segundos . Se esta propriedade não for configurada, o valor do tempo limite da conexão é o valor padrão (15 segundos).Além disso, definindo o valor de tempo limite para
0
, você está especificando que sua tentativa de conexão aguarda um tempo infinito. Conforme descrito na documentação, isso é algo que você não deve definir em sua string de conexão:fonte
Hmmm ...
Como disse Darin, você pode especificar um valor de tempo limite de conexão mais alto, mas duvido que esse seja realmente o problema.
Quando você obtém tempos limite de conexão, normalmente é um problema com um dos seguintes:
Configuração de rede - conexão lenta entre seu servidor web / dev box e o servidor SQL. Aumentar o tempo limite pode corrigir isso, mas convém investigar o problema subjacente.
String de conexão. Tenho visto problemas em que um nome de usuário / senha incorretos, por algum motivo, fornecem um erro de tempo limite em vez de um erro real indicando "acesso negado". Isso não deveria acontecer, mas a vida é assim.
String de conexão 2: se você estiver especificando o nome do servidor incorretamente ou de forma incompleta (por exemplo, em
mysqlserver
vez demysqlserver.webdomain.com
), você obterá um tempo limite. Você pode executar ping no servidor usando o nome do servidor exatamente como especificado na string de conexão da linha de comando?Sequência de conexão 3: Se o nome do servidor estiver em seu DNS (ou arquivo hosts), mas apontar para um IP incorreto ou inacessível, você obterá um tempo limite em vez de um erro de máquina não encontrada.
A consulta que você está chamando está expirando. Pode parecer que a conexão com o servidor é o problema, mas, dependendo de como seu aplicativo está estruturado, você pode estar indo até o estágio em que sua consulta está sendo executada antes que o tempo limite ocorra.
Vazamentos de conexão. Quantos processos estão em execução? Quantas conexões abertas? Não tenho certeza se o ADO.NET bruto realiza o pool de conexão, fecha automaticamente as conexões quando necessário, como a Enterprise Library, ou onde tudo está configurado. Este é provavelmente um arenque vermelho. Ao trabalhar com WCF e serviços da Web, porém, tive problemas com conexões não fechadas que causavam tempos limite e outros comportamentos imprevisíveis.
Coisas para tentar:
Você obtém um tempo limite ao se conectar ao servidor com o SQL Management Studio? Em caso afirmativo, a configuração de rede é provavelmente o problema. Se você não encontrar um problema ao se conectar com o Management Studio, o problema estará no seu aplicativo, não no servidor.
Execute o SQL Profiler e veja o que está realmente acontecendo na rede. Você deve saber se está realmente se conectando ou se o problema é uma consulta.
Execute sua consulta no Management Studio e veja quanto tempo leva.
Boa sorte!
fonte
Se você quiser alterá-lo dinamicamente, prefiro usar SqlConnectionStringBuilder .
Ele permite que você converta ConnectionString, ou seja, uma string em uma classe Object. Todas as propriedades da string de conexão se tornarão seu membro.
Nesse caso, a vantagem real seria que você não precisa se preocupar. Se a parte da string ConnectionTimeout já existe na string de conexão ou não?
Além disso, como ele cria um objeto e é sempre bom atribuir valor no objeto ao invés de manipular string.
Aqui está o exemplo de código:
fonte
ConnectionTimeout
propriedade doSqlConnection
tipo somente leitura foi considerada uma boa ideia.