É isso aí pessoal, estou atuando em um projeto de transição e nele constam alguns servidores SQL Server, dentre eles uma máquina virtual com Windows Server 2003 e….para a minha tristeza um SQL Server 2000 :), que foi alocada em um ambiente VMware.
Bom, acontece que durante uma validação, ao tentar iniciar o serviço do SQL Server no Windows Services (services.msc) eu recebi a mensagem de erro citada acima! Uma mensagem bastante genérica e uma pesquisa na net retornará centenas de situações/causas possíveis.
Olhando nos errors log do SQL Server eu notei que o SQL Server já tinha subido 1 dia antes e verificando o último error log eu constatei que o SQL Server já tinha ficado online e sua última entrada no log foi “SQL Server terminating because of system shutdown“. Opa…system shutdown?? Vale uma olhada nos logs system e application do Windows Eventviewer…
Então, olhando no Windows System log constatei que o SQL Server realmente já havia estado online 1 dia antes e que após um restart do servidor o serviço passou a não subir mais. No Windows Applog não tinha absolutamente NADA de erro, mas no System log eu tinha as entradas de erro…
“Tempo limite (30000 milissegundos) de espera para que o serviço MSSQLSERVER se conecte” ( É…o Windows e SQL são em portugues-br mesmo :))
Na sequência…”Não foi possível iniciar o serviço MSSQLSERVER devido ao seguinte erro: O serviço não respondeu à requisição de início ou controle em tempo hábil“
Fiz algumas pesquisas, mas não encontrei nada que diante da situação que Eu tinha pudessem ter algum relacionamento. Então, resolvi abrir um prompt do DOS e tentar subir o serviço do SQL Server via linha de comando.
Recomendo que sempre tentem fazer isso, além de ajudar a resolver problemas com a conta de serviço, por exemplo, usuário bloqueado ou senha inválida (quando iniciado via linha de comando o sql server é iniciado no contexto da conta de usuário que o está executando), quase sempre apresenta mensagens de erros mais claras.
Foi então que ao executar o sqlservr.exe no prompt do DOS recebi a mensagem de erro abaixo:
“Este aplicativo não pôde ser iniciado porque não foi encontrado MSVCP71.dll. A reinstalação do aplicativo pode corrigir o problema“.
Primeiro pensei…porquê a porcaria desta mensagem não aparece lá no Windows Services não é!? Seria tudo mais fácil 🙂
É..mas aí lembrei de um antigo chefe que sempre me dizia…”Se fosse fácil Eu mesmo fazia!“…”Se fosse fácil Eu não precisaria de você!“…Sempre enxerguei como um elogio kkkk!!
Depois pensei…bom, faltando .dll…SQL Server não sobe após restart, mas esteve Online dias atrás…está claro que alguma coisa que foi instalada “bichou” a .dll ou a removeu!!
Fiz então uma busca no Windows Explorer pela .dll em questão e foi quando encontrei uma versão dela em Arquivos de Programas/VMware/… Hummmm…isso possivelmente explicava o “system shutdown” visto lá no Error Log do SQL Server 🙂
Pensei…bom, então neguinho instalou as bibliotecas do VMware e a “filha de uma mãe” não só removeu a .dll original (possivelmente do windows/system32) como ainda colocou uma outra versão apenas para seu uso (em seu próprio path)!!
Resolvi não mexer na .dll do VMware e como Eu não tinha um outro ambinte com SQL Server 2000 para copiar a .dll de lá, verifiquei que o SQL Server 2000 estava no SP4 e peguei a .dll do SP4 (que inclusive é de uma versão mais atual que a do client VMware). Coloquei a .dll em Windows/system32 e…tá lá…SQL Server no Online e operacional :).
É isso pessoal, espero que este troubleshooting ajude vocês no futuro e fica a dica para sempre que possível tentar executar o SQL via linha de comando antes de sair reinstalando o SQL 🙂
abraços
Nilton Pinheiro