none
Motivo(s) pelo qual o banco fica suspect RRS feed

  • Pergunta

  • Turma, 

    Tenho tido vários problemas em clientes com o banco de dado suspect. pelo que vi no próprio fórum, existem vários testes que podem ser feitos como intuito de recuperá-lo (DBCC e suas variações). 

    Preciso entender melhor as seguintes questões:

    • motivo pelo qual ele fica suspect - o que causa
    • como recuperá-lo, qual a ordem de comandos devo executar?
    • vi que através de alguns ferramentas é possível ler os dados diretamente do arquivo MDF e gerar um script. Essas ferramentas funcionam? vale a pena?
    • DBCC CHECKDB provoca perda de dados?
    • ao configurar o crescimento em % do banco de dados, isso pode ser problema para o causar o suspect?

    Enfim, vários, mas são vários clientes que tem esse tipo de problema. Utilizo o sql 2005 express, 2005, 2008. 

    Valeu !!! 


    Pablicio
    • Movido Gustavo Maia Aguiar quarta-feira, 4 de agosto de 2010 18:33 (De:SQL Server - Desenvolvimento Geral)
    quarta-feira, 4 de agosto de 2010 18:22

Todas as Respostas

  • Caro Pablicio,

     

    Vou tentar responder algumas das suas perguntas. Há vários motivos que levam um banco a ficar em estado SUSPECT. Um dos motivos que já presenciei é corrupção (ou suspeita de) de um ou mais arquivos do banco de dados, seja o(s) arquivo(s) de dados ou de log.

    Quando isso acontece, aqui no nosso ambiente (90% bancos com compatibilidade SQL 2000), eu sigo os seguintes procedimentos para resolver o problema:

    1- Executo a procedure sp_resetstatus '<nome_do_db>' . Esta procedure retira o status de suspect do banco de dados.

    2- Executo o comando DBCC DBRECOVER(<nome_do_db>) . Este retorna o banco de dados ao seu estado original.

    Em seguida seria bom executar um DBCC CHECKDB mas no nosso ambiente nem sempre isto é possível...

    Quanto às dúvidas, o CHECKDB não causa perda de dados, pelo menos eu nunca vi isto acontecer. Se houve alguma perda de dados, foi por algum outro motivo. E sobre o crescimento do banco de dados em %, dificilmente somente esta configuração cause uma alteração do estado do banco para suspect...

    Bem, espero ter ajudado em algo.

     

    Att,


    Erickson Ricci - MCP, MCTS, MCTS BI http://ericksonricci.spaces.live.com/blog/
    quarta-feira, 4 de agosto de 2010 22:49
  • Bom dia Pablicio, complementando as informações do Erickson

  • motivo pelo qual ele fica suspect - o que causa

    Esse link responde essa pergunta:

    http://www.mytechmantra.com/LearnSQLServer/Repair_Suspect_Database_P1.html

    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, Power failure or a Hardware failure.

    Essa semana aconteceu comigo o numero 5. Depois de um boot no servidor uma database subiu como suspect.

  • como recuperá-lo, qual a ordem de comandos devo executar?

    O link passado tb tem uma possível solução. No meu caso fiz o seguinte:

    Executei o comando DBCC CHECKDB e vi que ela não possuia nenhuma corrupção.

    ALTER DATABASE NOME_DATABASE SET EMERGENCY

    Nesse momento eu ja conseguia ver as tabelas dessa database. Em seguida executei o comando abaixo:


    ALTER DATABASE NOME_DATABASE SET ONLINE

    Minha database voltou ao normal.

     

     

  • vi que através de alguns ferramentas é possível ler os dados diretamente do arquivo MDF e gerar um script. Essas ferramentas funcionam? vale a pena?

    Desconheço esse procedimento.

  • DBCC CHECKDB provoca perda de dados?

    DBCC CHECKDB sem nenhuma opção não provoca perda de dados. Agora se você rodar com REPAIR_ALLOW_DATA_LOSS ai sim pode causar perda de dados.

     

  • ao configurar o crescimento em % do banco de dados, isso pode ser problema para o causar o suspect?

    Se você tiver espaço suficiente para que a database cresça, isso não deixaria a database suspect.

     

    Espero ter ajudado.


  • Fabrício França Lima | MCP, MCTS, MCITP | Visite meu site: http://fabriciodba.spaces.live.com/ | Dicas de artigos SQL: Siga-me no twitter @fabriciodba.
quinta-feira, 5 de agosto de 2010 13:11
  • Erikson,

    Obrigado pelo retorno.

    Tenho uma dúvida enorme sobre compatibilidade, pois utilizamos SQL 2005 (90) e os bancos estão com compatibilidade 2000 (80).

    Você sabe me informar o por quê disso? Qual vantagem/desvantagem?

    Enfim, de repente poderia mudar isso e minimizar os problemas com banco suspect.

    Valeu !!!

     


    Pablicio
    sexta-feira, 6 de agosto de 2010 02:10
  • Fabrício, Obrigado pelo retorno. Faço examente esse processo que você informou, mas as vezes não consigo recuperar o banco de dados e somente com o backup consigo recuperar. O maior problema é que tenho clientes que nunca falam o que fazem no servidor. Daí fica muito difícil, mas acredito que a maior parte dos problemas refere-se a forma como o servidor está sendo desligado, pois outro dia desliguei um enquanto processao (para teste) e o banco ficou em suspect. Enfim, tudo que puder contribuir lhe agradeço. Valeu !!!
    Pablicio
    sexta-feira, 6 de agosto de 2010 02:13