Usuário com melhor resposta
SQL trava programa ao ficar inativo

Pergunta
-
Olá
Gente novamente, não consegui resolver o problema do SQLDatabase. Ao acessar pela primeira vez ou ficar inativo por algum tempo o programa trava por alguns segundos.
Tentei usar o "connect timeout" mas não resolveu:
Public Function ConexaoSQL() As SqlConnection Dim SQL As String = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" & SQLDiretorio() & "; Integrated Security=True; connect timeout=65535;" Return New SqlConnection(SQL) End Function
Quem puder me ajudar agradeço, esse problema já ta me dando nos nervos.
Respostas
-
Boa tarde Eliseu5,
Na verdade não é que ele trave, é que ele tem um delay para refazer a conexão.
Como você bem já percebeu você precisar setar um tempo maior para a sessão, todavia, mesmo com o tempo que você setou ali 65535, em um certo momento, também vai expirar.
Se você quer trabalhar com essa alteração, eu recomendo que você utilize o SqlConnectionStringBuilder, ele vai alterar a connection string para um objeto para melhorar a manipulação, segue um exemplo abaixo:
var sscsb = new SqlConnectionStringBuilder(_dbFactory.Database.ConnectionString); sscsb.ConnectTimeout = 30; var conn = new SqlConnection(sscsb.ConnectionString);
Att., Roberto Alves
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.- Marcado como Resposta Marcos SJ terça-feira, 15 de março de 2016 20:28
Todas as Respostas
-
Bom dia Eliseu5,
Tudo bem?
Você já deu uma olhada no Event Viewer para ver se há algum código de erro ou qualquer outro tipo de informação que possa ajudar a entender que está ocorrendo?
Atenciosamente
Marcos SJ Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Olá Marcos
Obrigado por seu interesse em me ajudar.
Primeiro, não faço ideia oque é "Event Viewer", segundo creio que não seja erro pois caso contrário o travamento ocorreria cada busca e não apenas após tempo de inatividade.
Mas posso dar uma olhada se me explicar oque é e onde.
-
Bom dia Eliseu5,
Ok, então de maneira isolada e não diretamente relacionada ao seu problema, e isso é somente uma sugestão, pois isso é algo que vai te salvar de muitos apuros pela estrada da vida, eu sugiro que aprenda a usar o Event Viewer. Sugiro que estude as seguintes informações:
Que informações aparecem nos logs de eventos? (Visualizador de Eventos)
Using Event Viewer to Troubleshoot Problems
Sua aplicação se encontra em uma situação semelhante a esta?
Atenciosamente
Marcos SJ Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Eliseu5,
Você já chegou a observar ou monitorar por quanto tempo esta inatividade esta ocorrendo? Isso é um ponto específico do sistema?
Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
-
Olá Marcos
Obrigado pela sugestão, desconhecia o "Event Viewer", e vou dar uma estudada sobre ele.
Sim, minha situação é semelhante. Alterei o "connect timeout=65535;" para o "Connection Timeout=65535;", vamos ver se muda alguma coisa, depois comento.
-
-
Boa tarde Eliseu5,
Na verdade não é que ele trave, é que ele tem um delay para refazer a conexão.
Como você bem já percebeu você precisar setar um tempo maior para a sessão, todavia, mesmo com o tempo que você setou ali 65535, em um certo momento, também vai expirar.
Se você quer trabalhar com essa alteração, eu recomendo que você utilize o SqlConnectionStringBuilder, ele vai alterar a connection string para um objeto para melhorar a manipulação, segue um exemplo abaixo:
var sscsb = new SqlConnectionStringBuilder(_dbFactory.Database.ConnectionString); sscsb.ConnectTimeout = 30; var conn = new SqlConnection(sscsb.ConnectionString);
Att., Roberto Alves
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.- Marcado como Resposta Marcos SJ terça-feira, 15 de março de 2016 20:28
-
-
Bom dia Eliseu5,
Olhe essa documentação oficial da Microsoft sobre isso, creio que vai lhe ajudar bastante: SqlConnectionStringBuilder.ConnectTimeout Property
Att., Roberto Alves
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.- Sugerido como Resposta Junior Galvão - MVPMVP quinta-feira, 17 de março de 2016 15:56