locked
Não é possível abrir o banco de dados "xyz" solicitado pelo logon. RRS feed

  • Pergunta

  • Quando o SQL Server é re(iniciado) e uma aplicação tenta se conectar nele em seguida, ocorre a seguinte mensagem de erro: Não é possível abrir o banco de dados "biblioshop" solicitado pelo logon. Falha de logon. Se algum tempo for aguardado, a conexão ocorre sem problema. A questão é que tenho um serviço que está configurado como dependente do SQL Server. Assim, quando o serviço do SQL Server é iniciado, o serviço de aplicação inicia em seguida. Parece que, embora o SQL Server tenha iniciado, ele não está 100% pronto. Como posso configurar para que o serviço do SQL Server fique com o status Iniciado apenas após ele estar 100% pronto?


    quinta-feira, 16 de dezembro de 2010 21:01

Respostas

  • Boa Noite,

    Toda vez que o SQL Server é iniciado (ou reiniciado), ele precisa verificar as transações pendentes em cada banco de dados e optar por revertê-las (transações que foram aplicadas, mas tiveram um rollback ou não tiveram uma finalização) ou confirmá-las (transações que estão no log de transações e não foram aplicadas no banco ou foram aplicadas parcialmente). Essas atividades de UNDO e REDO deixam o banco em processo de inicialização (Starting). A maioria dos bancos inicializa muito rápido e nem percebemos o banco em estado de inicialização (Recovering), mas pode ser que não seja o caso do seu banco. Você pode tirar a prova e verificar o tempo de recovery do banco no errorlog do SQL Server.

    Se for isso de fato, não há muito o que fazer senão entender o que provoca tantas pendências para uma base reinicializar. O que você pode fazer para aliviar é tentar utilizar o recurso de Instant File Initialization, mas não estou certo de sua eficácia nesse problema.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Compêndio de XML – Preparação para o exame 70-433 - MCTS Microsoft SQL Server 2008 - Database Development
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1161.entry


    Classifique as respostas. O seu feedback é imprescindível
    sexta-feira, 31 de dezembro de 2010 03:26

Todas as Respostas

  • Rafael,

    Uma vez iniciado o SQL fica disponivel para o acesso, em 100%. Uma dúvida: Se vc tentar apenas pelo SQL fazer as conexões no Management Studio, Profile, Configuration Manager, Consultas, etc...Isso ocorre normalmente?

    Essa seria a primeira averiguação a ser feita e depois avaliar sua aplicação.

    Att.,


    Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com Se o post foi útil, não esqueça de marcá-lo.
    sexta-feira, 17 de dezembro de 2010 01:37
  • Rafael,

    Qual é o serviço que você se referiu dependente do SQL Server?

    Não existe a possibilidade de estabelecer uma regra, quando serviço do SQL Server for reinicializado este serviço também será após algum tempo?

    Somente a sua aplicação não consegui se conectar ao SQL Server? Como o Marco Antônio questionou as demais ferramentas e recursos relacionadas ao SQL Server funcionam?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    terça-feira, 21 de dezembro de 2010 14:14
    Moderador
  • O serviço dependente do SQL Server é o Tomcat. O serviço do Tomcat é iniciado logo após o SQL Server. Porém, parece que o SQL Server demora mais tempo para iniciar (estar pronto para conexões) do que a aplicação que tenta se conectar ao banco de dados. Essa configuração de dependência é feita pelo próprio Windows. Desconheço como programar um tempo entre a inicialização do SQL Server e a inicialização do Tomcat.

    Não testei com outra aplicação, como o Management Studio, mas acredito que não ocorra o problema, pois até o Windows realizar o logon e abrir o Management Studio, já deverá ter dado tempo do SQL Server iniciar por completo. Não tenho como realizar o teste com outro aplicativo, pois o servidor é do cliente e está em produção. Na prática, quando o SQL Server ou o Windows é reiniciado, o Tomcat é reiniciado de novo (nesse intervalo de tempo o SQL Server fica pronto para aceitar a conexão).

    quinta-feira, 30 de dezembro de 2010 17:28
  • Boa Noite,

    Toda vez que o SQL Server é iniciado (ou reiniciado), ele precisa verificar as transações pendentes em cada banco de dados e optar por revertê-las (transações que foram aplicadas, mas tiveram um rollback ou não tiveram uma finalização) ou confirmá-las (transações que estão no log de transações e não foram aplicadas no banco ou foram aplicadas parcialmente). Essas atividades de UNDO e REDO deixam o banco em processo de inicialização (Starting). A maioria dos bancos inicializa muito rápido e nem percebemos o banco em estado de inicialização (Recovering), mas pode ser que não seja o caso do seu banco. Você pode tirar a prova e verificar o tempo de recovery do banco no errorlog do SQL Server.

    Se for isso de fato, não há muito o que fazer senão entender o que provoca tantas pendências para uma base reinicializar. O que você pode fazer para aliviar é tentar utilizar o recurso de Instant File Initialization, mas não estou certo de sua eficácia nesse problema.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Compêndio de XML – Preparação para o exame 70-433 - MCTS Microsoft SQL Server 2008 - Database Development
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!1161.entry


    Classifique as respostas. O seu feedback é imprescindível
    sexta-feira, 31 de dezembro de 2010 03:26