Diagnóstico do erro do Microsoft SQL Server 9001: o log do banco de dados não está disponível

18

Durante o fim de semana, um site que eu exibi parou de funcionar, registrando o seguinte erro no Visualizador de Eventos sempre que uma solicitação é feita ao site:

Event ID: 9001

The log for database 'database name' is not available. Check the event log for related error messages. Resolve any errors and restart the database.

O site está hospedado em um servidor dedicado, então eu sou capaz de RDP no servidor e bisbilhotar. O arquivo LDF do banco de dados existe na pasta C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA , mas a tentativa de fazer qualquer trabalho com o banco de dados do Management Studio resulta em uma caixa de diálogo informando o mesmo erro - 9001: O log do banco de dados não está disponível ...

Esta é a primeira vez que recebo este erro e venho hospedando este site (e outros) neste servidor web dedicado há mais de dois anos.

Entendo que esse erro indica um arquivo de log corrompido. Consegui colocar o site novamente online, desanexando o banco de dados e restaurando um backup de alguns dias atrás, mas minha preocupação é que esse erro seja indicativo de um problema mais sinistro, a saber, uma falha no disco rígido.

Enviei o suporte por e-mail para a empresa de hospedagem na Web e essa foi a resposta deles:

There doesn't appear to be any other indications of the cause in the Event Log, so it's possible that the log was corrupted. Currently the memory's resources is at 87%, which also may have an impact but is unlikely.

O log pode "ficar corrompido?"

A minha pergunta: Quais são os próximos passos que devo seguir para diagnosticar este problema? Como posso determinar se isso é, de fato, um problema de hardware? E se for, há alguma opção além de substituir o disco?

Obrigado

    
por Scott Mitchell 22.02.2011 / 00:18

9 respostas

15

Bem mais de 99% dos problemas de corrupção de banco de dados são para fazer o sistema de armazenamento. Metade dos problemas restantes são causados por memória ruim, com a outra metade sendo erros no SQL Server.

As probabilidades são de que é um problema de armazenamento.

Se isso acontecer novamente, execute o DBCC CHECKDB no banco de dados e isso fornecerá mais informações sobre a corrupção e se o problema pode ser corrigido sem fazer uma restauração. Você provavelmente precisará colocar o banco de dados online no modo de emergência para executar o checkdb no banco de dados.

O uso de memória em 87% não tem nada a ver com o problema. O SQL Server executará a memória até 100% (ou próximo a ela) por design.

    
por 22.02.2011 / 00:37
7

Consegui resolver isso colocando o banco de dados offline no Management Studio e imediatamente colocando-o de volta on-line. dbcc checkdb apresentou erros que foram resolvidos depois de fazer isso. Eu não posso dizer por que isso funcionou apenas que funcionou .

    
por 13.05.2011 / 18:23
5

Eu tive esse problema recentemente também e depois de montanhas de pesquisa, parece ser comum quando um banco de dados é definido como AUTO CLOSE. Eu configurei todos os bancos de dados para AUTO CLOSE = FALSE. Isso começou com um banco de dados, em seguida, passou para dois e o próximo foi em todos eles. Eu simplesmente reiniciei o Serviço de Instância do SQL Server em vez de restaurar os bancos de dados. Outra maneira de corrigir o sintoma é colocar o banco de dados problemático offline e colocá-lo novamente on-line.

    
por 20.11.2013 / 08:43
1

O MS SQL removerá os logs de um banco de dados afetado para evitar corrupção do banco de dados. É por isso que você obtém o erro 9001.

Quando você coloca o banco de dados afetado offline / online, o MS SQL ativará os logs afetados do banco de dados até que o erro volte a ocorrer.

Outra maneira de resolver isso é alterar a opção Auto_Close para OFF

link

    
por 23.08.2017 / 21:29
0

Eu vou adivinhar / espero que você tenha uma invasão indo para o disco para o seu servidor sql. Se você suspeitar de problemas de hardware, a primeira coisa que eu faria seria executar suas ferramentas de manutenção / diagnóstico de invasão.

a segunda coisa (provavelmente ao mesmo tempo se puder) é executada dbcc checkdb no banco de dados (talvez também os bancos de dados do sistema).

    
por 21.02.2011 / 22:41
0

Ok, primeiro passo, faça um backup do seu log e seus arquivos mdf para uma unidade completamente diferente. RAPIDAMENTE! (cópia de arquivo)

Além disso, tente executar um backup completo do banco de dados.

Em seguida, tente o seguinte. Usando seu banco de dados atual, desanexe-o, se puder e exclua o arquivo de log, ou mova-o para um local completamente diferente no disco. Em seguida, reconecte o banco de dados e ele será exibido na GUI com um arquivo de log, clique na remoção (ou exclusão) do arquivo de log para que ele não apareça e, em seguida, clique em OK. Basicamente, anexando-o sem um log, irá forçá-lo a criar um arquivo de log para o banco de dados no local padrão.

Deixe-me saber.

    
por 21.02.2011 / 22:45
0

Sim, eu também recebi o mesmo problema, foi com relação ao erro 9001 do tempDb, ou seja, log não disponível. Nós reiniciámos os serviços e tudo estava bem.

O problema por trás disso era SAN ou problema de armazenamento, enquanto a operação de gravação de E / S era incapaz de gravar por mais de 15 segundos.

    
por 13.06.2017 / 10:53
0

Ontem, recebi o mesmo erro "o log do banco de dados '%' não está disponível. Erro fatal 9001, msg 21. Entre em contato com o administrador" -

Solução alternativa Eu verifiquei o 'TempDB', mas não estava acessível da mesma forma que os bancos de dados do sistema. Então, antes de ir para a opção de reparo, eu simplesmente reiniciei os serviços SQL para essa instância e o problema foi resolvido :):)

    
por 23.10.2017 / 04:22
-2

Eu vi isso acontecer quando não há espaço em disco disponível para expansão de log; Você pode verificar se havia espaço suficiente no C: \ e se seus logs estão sendo gerenciados, ou seja, o backup será feito se você estiver no modo de recuperação total.

Eu mudaria seu ldf (e mdf's) do volume de inicialização se você tivesse a opção.

    
por 22.02.2011 / 01:02