none
SQL trava programa ao ficar inativo RRS feed

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

    terça-feira, 8 de março de 2016 21:02

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
    terça-feira, 15 de março de 2016 16:45

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.

    quarta-feira, 9 de março de 2016 13:14
  • 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.

     

    quarta-feira, 9 de março de 2016 20:32
  • 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:

    Event Viewer How To...

    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.

    quinta-feira, 10 de março de 2016 13:22
  • 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]

    quinta-feira, 10 de março de 2016 16:01
  • 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.

    sexta-feira, 11 de março de 2016 15:41
  • Olá Junior

    Obrigado por seu interesse em me ajudar.

    Na verdade nunca parei pra observar quanto tempo o programa precisa ficar inativo pra esse problema ocorrer. Posso té tentar verificar.

    sexta-feira, 11 de março de 2016 15:45
  • 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
    terça-feira, 15 de março de 2016 16:45
  • Olá Roberto

    Obrigado por seu interesse em me ajudar.

    > Como adapto ele e onde>

    > Tenho que chamá-lo automaticamente cada período, usando por exemplo um timer?


    • Editado Eliseu5 quarta-feira, 16 de março de 2016 00:20
    quarta-feira, 16 de março de 2016 00:19
  • 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.

    quarta-feira, 16 de março de 2016 12:52