Aguarde… Carregando

Casos do Dia a Dia – Databases em modo Suspect e Pendente Recovery

Olá Pessoal,

Compartilhando mais uma experiência do meu Dia a Dia com vocês (fazia tempo que não fazia um post assim), tive um problema em um servidor onde o serviço do SQL Server foi iniciado sem que a LUN onde estavam as bases de usuários tivesse disponível para utilização. Pouco tempo depois a LUN ficou disponível para o SQL Server, mas as bases continuaram indisponíveis.

Ao me deparar com esse cenário, verifiquei que duas bases estavam com o status SUSPECT e o resto estava com o status Pendente Recovery. Dessa forma, executei o comando abaixo para deixar as bases online já que o disco estava disponível:

ALTER DATABASE NOME SET ONLINE

Das 20 bases que tinha, 19 ficaram online e apenas uma estava gerando um erro ao executar essa operação.

Antes de falar da base que tive um problema mais crítico, dessas 19 bases que ficaram ONLINE, todas as bases utilizadas pelo LYNC não estavam mostrando as tabelas existentes nessa base. Após executar um CHECKDB nessas bases do LYNC, recebia os erros abaixo:

Msg 1823, Level 16, State 2, Line 1
A database snapshot cannot be created because it failed to start.
Msg 7928, Level 16, State 1, Line 1
The database snapshot for online checks could not be created. Either the reason is given in a previous error or one of the underlying volumes does not support sparse files or alternate streams. Attempting to get exclusive access to run checks offline.
Msg 7985, Level 16, State 2, Line 1
System table pre-checks: Object ID 3. Could not read and latch page (1:55) with latch type SH. Check statement terminated due to unrepairable error.
DBCC results for ‘BASE’.
Msg 8966, Level 16, State 2, Line 1
Unable to read and latch page (1:55) with latch type SH. 21(failed to retrieve text for this error. Reason: 15105) failed.
CHECKDB found 0 allocation errors and 1 consistency errors not associated with any single object.
CHECKDB found 0 allocation errors and 1 consistency errors in database ‘rgsdyn’.
is the minimum repair level for the errors found by DBCC CHECKDB (rgsdyn).
Msg 9001, Level 21, State 4, Line 1
The log for database ‘BASE’ is not available. Check the event log for related error messages. Resolve any errors and restart the database.

Fiz um Detach dessas bases e em seguida um Attach. Ao fazer o Attach, as bases subiram sem problema e o CHECKDB não retornou mais nenhum erro. Um grande alívio!!!!

**IMPORTANTE** – Nesse caso eu fiz um Detach pois tinha um Backup pronto para restaurar a base. Caso você não tenha um backup ou não possa perder nenhum segundo de informação, o indicado é tentar outras operações antes do Detach, pois ao tentar dar um attach, sua base pode não subir e você pode ficar sem nenhuma informação dessa base.

Falando agora da base rebelde que não seguiu o padrão das outras.

Tentei alterar o status dessa base com problema para EMERGENCY e OFFILINE e também não consegui.

Após algumas tentativas de voltar a base ela ficou com o status RESTORING.

Nesse momento tentei o comando RESTORE DATABASE BASE with recovery e nada. Tentei continuar o restore com a opção RESTART do restore e também não consegui.

Tentei dar um detach na base e nada.

Executei o comando DROP DATABASE BASE. O comando era executado com sucesso, mas a base não era excluída e permanecia com o status RESTORING (ainda não tenho explicação para isso).

No fim das contas tive que reiniciar o serviço do SQL Server no fim do dia. Ao fazer isso a base subiu com o status RECOVERY_PENDING e aí sim eu consegui dar um DROP DATABASE (antes disso renomeei os arquivos .mdf e .ldf dessa database por precaução). Após excluir a base, bastou eu dar um attach nos arquivos dela que ela ficou online e sem nenhum problema.

Passado o susto e a pressão do chefe do lado cobrando a volta das bases, a experiência até que é boa. Mais um aprendizado.

Caso passe por esse tipo de problema e não queira arriscar uma ação que possa ser equivocada, entre em contato comigo que atendo como uma Consultoria SQL Server.

Gostou dessa dica?

Cadastre seu e-mail para receber novos Posts e curta minha Página no Facebook para receber Dicas de Leituras e Eventos sobre SQL Server.

Confira mais experiências do Dia a Dia de um DBA no meu Treinamento de Tarefas do Dia a Dia de um DBA.

Abraços,

Fabrício Lima

MCITP – Database Administrator

Consultor e Instrutor SQL Server

Trabalha com SQL Server desde 2006

Deixe uma resposta

%d blogueiros gostam disto: