locked
sql connection RRS feed

  • Pergunta

  • Srs.

    Tenho um aplicativo que roda durante muito tempo, tirando informações de um banco e passando para outro. Depois de umas 10 horas de execução, recebo um erro de falha na transação porque a conexão tinha sido fechada. Observando as minhas queries no management studio, percebi que todas estavam indicando "não conectado".

    o sql server está rodando em uma máquina e o programa está trabalhando em outra, em uma rede de dominio.

    alguem tem uma idéia de onde começo a procurar?

    obrigado


    • Editado DeraldoSilva quinta-feira, 4 de julho de 2013 14:20
    quinta-feira, 4 de julho de 2013 14:19

Respostas

  • Olá,

    você já tentou executar a ação e monitorar usando o profiler? coloque-o para capturar os erros também e veja se aparece alguma coisa quando ele para de comunicar.

    sua aplicação não tem nenhuma configuração de time-out?


    -- Ricardo Leka - http://leka.com.br

    quinta-feira, 4 de julho de 2013 16:05
  • Olá Deraldo!

    Processos demorados estão sempre sujeitos a falhas na rede, acontece que são muitas estas falhas e as formas de se realizar um troubleshotting, recomendo a você que monte uma estratégia a partir do artigo abaixo:

    http://blogs.msdn.com/b/sql_protocols/archive/2008/04/30/steps-to-troubleshoot-connectivity-issues.aspx

    Um abraço!


    Regards,

    André César Rodrigues

    Please click the Mark as answer button and vote as helpful if this reply solves your problem. Thanks!

    Blog: http://sqlmagu.blogspot.com.br  LinkedIn:   

    sexta-feira, 5 de julho de 2013 02:58
  • Olá Deraldo! Recovery é um processo realizado na subida do serviço do Sql Server, pelo que percebi no log durante a subida das bases (tempdb sendo mais especifico) ocorre uma tentativa de login, esta falha pois as bases ainda não foram montadas, logo após isso o serviço recebe uma parada do service control manager, dai a mensagem de shutdown. Existe um problema conhecido sobre queda do servico do Sql quando a base tempdb ainda nao terminou seu recovery e usuarios tentam se conectar na instância, para contornar isso deve se adicionar nos parametros de inicialização do SQL o trace flag 3614. Navegue até os programas relacionados ao Sql e procure pelo Configuration Manager, abra ele, localize o servico do SQL Server clique nele com o direito, propriedades e procure pelo campo startup parameters, no final dele vc deve ver algo como master.mdf, adicione ao final disso ";-T3614" sem aspas, e reinicie o serviço do SQL. Veja se o problema ira voltar a acontecer. Um abraço!

    Regards,

    André César Rodrigues

    Please click the Mark as answer button and vote as helpful if this reply solves your problem. Thanks!

    Blog: http://sqlmagu.blogspot.com.br  LinkedIn:   

    sexta-feira, 5 de julho de 2013 10:10

Todas as Respostas

  • Olá,

    você já tentou executar a ação e monitorar usando o profiler? coloque-o para capturar os erros também e veja se aparece alguma coisa quando ele para de comunicar.

    sua aplicação não tem nenhuma configuração de time-out?


    -- Ricardo Leka - http://leka.com.br

    quinta-feira, 4 de julho de 2013 16:05
  • Olá Deraldo!

    Processos demorados estão sempre sujeitos a falhas na rede, acontece que são muitas estas falhas e as formas de se realizar um troubleshotting, recomendo a você que monte uma estratégia a partir do artigo abaixo:

    http://blogs.msdn.com/b/sql_protocols/archive/2008/04/30/steps-to-troubleshoot-connectivity-issues.aspx

    Um abraço!


    Regards,

    André César Rodrigues

    Please click the Mark as answer button and vote as helpful if this reply solves your problem. Thanks!

    Blog: http://sqlmagu.blogspot.com.br  LinkedIn:   

    sexta-feira, 5 de julho de 2013 02:58
  • Bom dia Ricardo.

    a aplicação como vc deve ter percebido é um utilitário para converter um banco velho em um novo. não é um aplicativo de sistema. Em todo caso, é claro que tenho controle do time-out. o problema é que como estou fazendo uma transaction, quando o banco cai, ocorre um erro e ele tenta fazer um rollback (no catch). até agora pelo menos não tinha visto sentido em controlar timeout no rollback. engano meu. mas olhei o log e vi o seguinte:

    2013-07-04 11:13:34.38 spid9s      Starting up database 'tempdb'.
    2013-07-04 11:13:34.55 Logon       Error: 18461, Severity: 14, State: 1.
    2013-07-04 11:13:34.55 Logon       Login failed for user 'NT AUTHORITY\NETWORK SERVICE'. Reason: Server is in single user mode. Only one administrator can connect at this time. [CLIENT: <local machine>]
    2013-07-04 11:13:36.32 spid7s      Recovery is complete. This is an informational message only. No user action is required.
    2013-07-04 11:13:38.52 spid7s      SQL Server is terminating in response to a 'stop' request from Service Control Manager. This is an informational message only. No user action is required.
    2013-07-04 11:13:38.52 spid7s      SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no user action is required.
    2013-07-04 11:13:38.54 Server      The SQL Server Network Interface library successfully deregistered the Service Principal Name (SPN) [ MSSQLSvc/MULTI02.xxx.com ] for the SQL Server service.
    2013-07-04 11:13:38.54 Server      The SQL Server Network Interface library successfully deregistered the Service Principal Name (SPN) [ MSSQLSvc/MULTI02.xxx.com:1433 ] for the SQL Server service.

    ajuda em algo??? não entendi o porque do server shutdown.

    vlw pela atenção

    sexta-feira, 5 de julho de 2013 09:43
  • Bom dia Andre.

    rapaz. teoricamente (sic!) eu não tenho nenhum dos issues reportados no excelente relatório q vc me passou. (aliás, muito grato mesmo. é material para alfarrábio)

    da uma olhada no log q postei em resposta ao Ricardo.

    a aplicação foi feita em c# com linq to sql e aparentemente funciona perfeitamente até que um problema de conexão aconteçe. o que estou tentando descobrir é qual foi o problema de conexão, externo a aplicação que causou este disparate.

    muito obrigado por sua atenção.

    sexta-feira, 5 de julho de 2013 09:49
  • Olá Deraldo! Recovery é um processo realizado na subida do serviço do Sql Server, pelo que percebi no log durante a subida das bases (tempdb sendo mais especifico) ocorre uma tentativa de login, esta falha pois as bases ainda não foram montadas, logo após isso o serviço recebe uma parada do service control manager, dai a mensagem de shutdown. Existe um problema conhecido sobre queda do servico do Sql quando a base tempdb ainda nao terminou seu recovery e usuarios tentam se conectar na instância, para contornar isso deve se adicionar nos parametros de inicialização do SQL o trace flag 3614. Navegue até os programas relacionados ao Sql e procure pelo Configuration Manager, abra ele, localize o servico do SQL Server clique nele com o direito, propriedades e procure pelo campo startup parameters, no final dele vc deve ver algo como master.mdf, adicione ao final disso ";-T3614" sem aspas, e reinicie o serviço do SQL. Veja se o problema ira voltar a acontecer. Um abraço!

    Regards,

    André César Rodrigues

    Please click the Mark as answer button and vote as helpful if this reply solves your problem. Thanks!

    Blog: http://sqlmagu.blogspot.com.br  LinkedIn:   

    sexta-feira, 5 de julho de 2013 10:10
  • Andre. já fiz, obrigado.

    agora vou deixar a aplicação rodando e amanhã eu te aviso se funcionou ok?

    abração

    sexta-feira, 5 de julho de 2013 12:16
  • Sem problemas! Um abraço!


    Regards,

    André César Rodrigues

    Please click the Mark as answer button and vote as helpful if this reply solves your problem. Thanks!

    Blog: http://sqlmagu.blogspot.com.br  LinkedIn:   

    sexta-feira, 5 de julho de 2013 12:18