Database em modo Suspect

Em mais um caso do dia a dia, acabei me deparando com o seguinte problema, uma base SQL Server com o status de Suspect.

SQL-database-suspect

Uma vez com este status, não é possível verificar os objetos da base via Object Explorer do Management Studio.

Existe uma query bacana que traz a relação das bases com o status de SUSPECT além de ser possível analisar o status via Object Explorer do Management Studio.

SELECT NAME,STATE_DESC FROM SYS.DATABASES WHERE STATE_DESC=’SUSPECT’

Uma base de dados pode ficar como suspect devido a seguinte relação:

1. Banco de dados pode ter sido corrompido.

2. Não há espaço suficiente disponível para o SQL Server para recuperar o banco de dados durante a inicialização.

3. Banco de dados não pode ser aberto devido a arquivos inacessíveis ou memória insuficiente ou espaço em disco.

4. Arquivos de banco de dados estão sendo realizadas pelo sistema operacional, software de backup terceiro partido etc

5. Desligamento inesperado SQL Servidor

Para resolver esta questão, altere o status da base para emergency:

ALTER DATABASE NOME_DATABASE SET EMERGENCY

Já com este status, a base fica como READ_ONLY e o acesso fica limitado a membros da server role sysadmin. Uma vez mais tranquilo sabendo que os objetos estão acessíveis, foi necessário executar um DBCC CHECKDB para constatar se de fato, nenhum dado estava corrompido nesta base. O resultado de inicio foi:

“found 0 errors and repaired 0 errors”.

Porém não foi possível setar a base de dados para ONLINE, pois no momento desta ação era retornado um erro no arquivo de log do SQL, algo referente:

“An error occurred during recovery, preventing the database ‘database’ (database ID 6) from restarting. Diagnose the recovery errors and fix them, or restore from a known good backup. If errors are not corrected or expected, contact Technical Support.”

Desta forma, foi executado um novo checkdb, forçando novamente a reparação:

dbcc checkdb(‘database’, REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS
go

http://technet.microsoft.com/pt-br/library/ms176064.aspx

Com isso, foi possível setar a base para ONLINE novamente sem a necessidade de um restore. Afim de evitar qualquer problema neste processo, é interessante restringir o acesso a base, e após a base estar ONLINE, deixar o acesso a multi usuários ou conforme a necessidade:

alter database nomedabase set single_user

alter database pdBdProd set multi_user

http://technet.microsoft.com/pt-br/library/ms345598.aspx

– Fonte:

Uma grande base para analises foi extraída do artigo postado pelo Fabrício Lima através do Dev Media, e com a ajuda de um grande DBA José Rocha 🙂

http://www.devmedia.com.br/casos-do-dia-a-dia-database-em-modo-suspect/18243

Dúvidas, criticas ou sugestões? Fiquem a vontade, todo retorno é construtivo 😀

Jose Wilson

4 Replies to “Database em modo Suspect”

  1. muitooo bom
    esclarece bastante e é bem detalhado,
    do jeito que foi escrito da pra até quem estar começando agora entender..

    Muito bom cara curti, parabéns
    ficou Show
    Posta mais ae!!
    Valeu!!

Deixe uma resposta