locked
Banco em Recovery por muito tempo RRS feed

  • Pergunta

  • tenho um banco em sql2000 e tenho uma tabela neste campo

    e inseri um campo novo

     

    resultado esta tabela tem 5.000.000 de registros

    demorou tanto que resolvi iniciar a maquina

     

    resultado

     

    agora mesmo eu acessando pelo enterprise

    nao abre para mim os databases

    nao aparecem nenhum e o fica parado.... o que fazer

     


    jonas
    • Editado Gustavo Maia Aguiar quarta-feira, 2 de fevereiro de 2011 04:01 "Socorro" não é algo muito informativo
    • Movido Gustavo Maia Aguiar quarta-feira, 2 de fevereiro de 2011 04:04 (De:SQL Server - Desenvolvimento Geral)
    terça-feira, 1 de fevereiro de 2011 19:48

Respostas

  • Jonas

    Provavelmente o SQL esta fazendo um recovery deste banco... tente ver o log do SQL

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    terça-feira, 1 de fevereiro de 2011 19:57
    Moderador
  • xp_readerrorlog
    
    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    terça-feira, 1 de fevereiro de 2011 20:12
    Moderador
  • Boa Noite,

    Se um banco está em RECOVERY é porque há pendências e o SQL Server precisa de tempo para recuperá-lo. Não aconselho em hipótese nenhuma tentar interferir (até porque não há muito o que fazer). Um banco em Recovery será recuperado (pode demorar, mas ele se recupera). Qualquer script poderá transformar uma situação de espera em uma situação de catástrofe. Parâmetros como REPAIR_ALLOW_DATA_LOSS podem levar a perda de dados e não é prudente executá-lo sem necessidade.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 2 de fevereiro de 2011 04:04

Todas as Respostas

  • Jonas

    Provavelmente o SQL esta fazendo um recovery deste banco... tente ver o log do SQL

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    terça-feira, 1 de fevereiro de 2011 19:57
    Moderador
  • como eu consigo verificar o log do sql?

     


    jonas
    terça-feira, 1 de fevereiro de 2011 20:08
  • xp_readerrorlog
    
    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    terça-feira, 1 de fevereiro de 2011 20:12
    Moderador
  • cara eu executei o xp_readerrorlog

    apareceu realmente que ele fez o recovery database

    agora ele esta parado a 1 hora para com uma mensagem:

    recovery is checkpoint database ???????

    isso e normal?

     


    jonas
    terça-feira, 1 de fevereiro de 2011 20:27
  • Mann, acho que você fez a mesma coisa que eu...

    Executa esse script que eu acho que vai te salvar.


    1 - Conecta-se ao SQL Server no banco Master.

    2 - Execute este scritp:

    sp_configure

    'allow updates',1

    reconfigure

    with override

    3 - Depois execute este outro script:

    Update

    sysdatabases set status =32768 where name ='TARGET_DATA'

    4 - Aps mudar o status do banco para Emergency Mode, necessrio reconstruir o log de transaes, utilize o DBCC rebuild_log:

    Dbcc

    Rebuild_log ('TARGET_DATA','C:\Program Files\Microsoft SQL Server\MSSQL\Data\TARGET_DATA_log')

    5 - Agora para finalizar a recuperao do banco, necessrio realizar os seguintes procedimento para recuperao de
    dados corrompidos e tambm para verificar a integridade dos dados comprometidos.

    Use

    TARGET_DATA

    go

    sp_dboption

    'TARGET_DATA', 'dbo use only', false

    go

    sp_dboption

    'TARGET_DATA','single_user', true

    go

    dbcc

    checkdb ('TARGET_DATA',repair_allow_data_loss)

    go

    6 - Aps realizar este procedimento o seu banco j dever esta em estado normal,
    agora necessrio voltar a forma de acesso ao banco para multiuso:

    Use

    TARGET_DATA

    go

    sp_dboption

    'TARGET_DATA','single_user', false

    go

    sp_dboption

    'TARGET_DATA', 'dbo use only', true

    go

     
    7 - Agora, vamos bloquear a permisso de alterao as table de sistema, faa o seguinte:

    sp_configure

    'allow updates',0

    reconfigure

    with override

    terça-feira, 1 de fevereiro de 2011 22:07
  • Boa Noite,

    Se um banco está em RECOVERY é porque há pendências e o SQL Server precisa de tempo para recuperá-lo. Não aconselho em hipótese nenhuma tentar interferir (até porque não há muito o que fazer). Um banco em Recovery será recuperado (pode demorar, mas ele se recupera). Qualquer script poderá transformar uma situação de espera em uma situação de catástrofe. Parâmetros como REPAIR_ALLOW_DATA_LOSS podem levar a perda de dados e não é prudente executá-lo sem necessidade.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 2 de fevereiro de 2011 04:04
  • Olá,

    Complementando a resposta do Gustavo se você executar o script acima para refazer o arquivo de log com o Rebuild log você irá perder todas as ultimas transações que ainda não foram "comitadas" na sua base de dados causando problemas de integridade em seu BD.

    Se você possui urgencia de colocar esta base online tente utilizar o ultimo backup valido para isso.

    abraços,


    Fábio Oliveira Support Engieer | Microsoft Enterprise and Developer Support
    quarta-feira, 2 de fevereiro de 2011 11:56