Falha na restauração do SQL Server 2005 do backup

3

Eu tenho arquivos .bak para o banco de dados de um projeto que minha empresa recentemente assumiu.

Consegui restaurar vários arquivos .bak, mas o mais importante está falhando.

Quando falha, simplesmente recebo um erro genérico e solicito a verificação do log.

Este é o erro que ocorre: mensagem Asserção do SQL Server: Arquivo:, linha = 1443 Falha de declaração = 'pFile'. Esse erro pode estar relacionado ao tempo. Se o erro persistir após a nova execução da instrução, use o DBCC CHECKDB para verificar a integridade estrutural do banco de dados ou reinicie o servidor para garantir que as estruturas de dados na memória não estejam corrompidas.

Eu não sei como executar o DBCC CHECKDB em um arquivo * .bak.

Qualquer ajuda seria muito apreciada. Embora eu tenha experiência com SQL como desenvolvedor, definitivamente não sou um DBA. Então, suponha que eu seja um idiota. :)

Obrigado!

    
por Jack Marchetti 25.06.2009 / 16:58

1 resposta

11

Essa asserção acontece porque o código de restauração leu uma página do backup, mas a página está corrompida e o ID do arquivo estampado no cabeçalho da página não existe no banco de dados que está sendo restaurado. Ele está disparando de um arquivo de código chamado bckioreq.cpp (eu costumava ter todas essas coisas enquanto estava no MS).

A mensagem para executar o DBCC CHECKDB é uma mensagem genérica que não se aplica neste caso.

Suponho que você está restaurando um backup completo do banco de dados e, em seguida, uma série de outros backups diferenciais e / ou de log? Você está restaurando em 2005, mas você está restaurando um backup mais antigo?

Isso é o que chamamos de declaração de varejo no código - não há absolutamente nenhuma maneira de contornar isso - assim que o código o atingir, a afirmação será disparada e as bombas serão restauradas. Há um item Connect para tornar isso mais legal, mas também não foi corrigido em 2008.

Isso está acontecendo no backup completo que você está restaurando ou em um dos backups diferenciais e / ou de log subsequentes? Se o backup completo, não há nada que você pode fazer - que o backup é torrada. Se um dos backups posteriores, você pode restaurar tudo, mas não incluindo esse backup.

Essa é basicamente sua resposta.

Agora, como isso aconteceu? (pergunta retórica) Pode ser que o backup do banco de dados esteja corrompido ou que o subsistema de E / S tenha corrompido o backup. Algumas coisas que você pode fazer para ajudar a se proteger contra isso - ative as somas de verificação de página no banco de dados e use a opção WITH CHECKSUM nos seus backups. Isso adiciona algumas verificações para garantir que o backup do backup não esteja corrompido. Você também pode validar seus backups de várias maneiras - verifique meu post no blog sobre isso: Importância de validar backups .

Espero que isso ajude!

    
por 25.06.2009 / 17:18