Aguarde… Carregando

Casos do Dia a Dia: Database em modo Suspect

Fala Pessoal,

Gostaria de compartilhar com vocês uma experiência que tive no ambiente de banco de dados que administro. Realizando um boot em um dos meus servidores SQL Server devido as atualizações de segurança do windows, uma de minhas databases subiu em modo Suspect. Como essa database é restaurada diariamente do servidor de produção para esse servidor D-1 e é utilizada por poucos relatórios, tive tempo de pesquisar se havia algum modo de recuperá-la sem precisar voltar um backup da mesma.

Mas Fabrício, como vou saber se alguma de minhas databases está em modo Suspect?

R: Além de ser possível visualizar no próprio Object Explore do Management Studio, rodando a query abaixo também podemos verificar se existe alguma database suspect em nosso ambiente:

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

Após algumas buscas, encontrei o seguinte artigo onde é ensinado um passo a passo de como voltar uma database em modo suspect: How to repair a Suspect Database in SQL Server.

Esse artigo identifica 5 possíveis motivos para uma database ficar como Suspect, são eles:

1. Database could have been corrupted.

2. There is not enough space available for the SQL Server to recover the database during startup.

3. Database cannot be opened due to inaccessible files or insufficient memory or disk space.

4. Database files are being held by operating system, third party backup software etc.

5. Unexpected SQL Server Shutdown

Tudo indica que comigo aconteceu o problema de número 5. E para resolve-lo, apenas segui o passo a passo desse artigo.

Com a database em estado suspect, não era possível verificar as propriedades e enchergar as tabelas dessa database no Object Explore do Management Studio, o que já deixa os usuários da database bem desesperados com medo de terem perdido os dados.

Para iniciar o processo de recuperação, executei o comando:

ALTER DATABASE NOME_DATABASE SET EMERGENCY

Nesse momento minha database ja estava em modo de emergencia e já era possível acessar as tabelas. Nessa hora já bate um aquele alívio. UFA, minhas tabelas estão acessíveis.

Entretanto, quando uma database está em modo de emergencia ela se torna READ_ONLY e o acesso fica limitado a membros da server role sysadmin. Para deixa minha database online novamente, executei o comando:

ALTER DATABASE NOME_DATABASE SET ONLINE

Minha database ficou totalmente acessível e meus usuários puderam utilizá-la normalmente.

Após deixar a database online, executei o comando DBCC CHECKDB para verificar se existia alguma corrupção nessa base. O resultado foi “found 0 errors and repaired 0 errors”.

Com isso, não precisei restaurar um backup da minha database para poder recuperá-la. Espero que possa ajudar alguém que passe por esse problema. Caso você tenha alguma experiência com uma database Suspect, deixe um comentário para compartilhar sua experiência com outras pessoas.

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

14 thoughts on “Casos do Dia a Dia: Database em modo Suspect

  1. Olá Fabricio,

    Trabalho a pouco tempo na manutenção dos servidores e hoje me deparei com a primeira emergência: Após uma queda de Luz, os serviços voltaram sem problemas, más um Banco do SQL Server 2008 voltou em modo SUSPECT, o principal por sinal, utilizado pelo sistema da Secretaria, Financeiro, Administrativo.
    Seu artigo foi fundamental para que conseguisse recuperar o banco e voltar o sistema sem nenhum problema.
    Cara, meus mais sinceros obrigados!!!

    Abraço!!!

Deixe uma resposta

%d blogueiros gostam disto: