AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 51636
Accepted
sa555
sa555
Asked: 2013-10-17 16:03:43 +0800 CST2013-10-17 16:03:43 +0800 CST 2013-10-17 16:03:43 +0800 CST

Restaurando banco de dados corrompido do SQL Server 2005

  • 772

Estou restaurando um banco de dados do SQL Server 2005 em uma instância do SQL Server 2008 R2 usando este comando:

RESTORE DATABASE SampleDB FROM DISK= 'C:\SampleProject\SampleDB.bak' WITH REPLACE,
MOVE 'sampledb' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\SampleDB.mdf', 
MOVE 'sampledb_log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\SampleDB_log.ldf',
CONTINUE_AFTER_ERROR, STATS = 10;

E a saída é:

10 percent processed.
20 percent processed.
30 percent processed.
40 percent processed.
50 percent processed.
60 percent processed.
70 percent processed.
80 percent processed.
90 percent processed.
100 percent processed.
Msg 3242, Level 16, State 2, Line 3
The file on device 'C:\SampleProject\SampleDB.bak' is not a valid Microsoft Tape Format backup set.
Msg 3013, Level 16, State 1, Line 3
RESTORE DATABASE is terminating abnormally.

Por que a porcentagem processada atinge 100%, mas termina de forma anormal?

Como posso restaurar este backup de banco de dados mesmo com dados corrompidos? Continuar após o erro não parece fazer nenhuma diferença.

sql-server restore
  • 2 2 respostas
  • 1715 Views

2 respostas

  • Voted
  1. Best Answer
    Sebastian Meine
    2013-10-17T19:58:06+08:002013-10-17T19:58:06+08:00

    A restauração de um backup é executada em três fases.

    1. criando os arquivos e zerando-os. (Os arquivos de log são sempre zerados, os arquivos de dados dependem de uma configuração do servidor)
    2. ler as páginas e escrevê-las em seus lugares nos novos arquivos
    3. avançando (transações confirmadas que ainda não atingiram um ponto de verificação) e depois voltando (transações não confirmadas).

    Somente a fase 2 é medida pelo contador de porcentagem. Se você estiver restaurando um backup de log muito grande, a 3ª fase pode realmente demorar significativamente mais do que a 2ª fase, enquanto o contador de porcentagem concluída está parado em 100%.

    Cada backup completo do banco de dados sempre contém uma parte do log. Se você tiver inconsistências lógicas nessa parte do arquivo de backup, o SQL Server não descobrirá até que esteja na 3ª fase. É por isso que você está vendo 100%.


    O melhor recurso para lidar com a corrupção do SQL Server é sqlskills.com . É mais provável que não, no entanto, você descobrirá que não pode obter os dados com métodos integrados. Se o problema estiver realmente na seção de log, você poderá usar uma ferramenta de fornecedor externo que possa ler backups como comparação de dados SQL red-gate. Também existem ferramentas que podem ajudar na recuperação de dados de bancos de dados corrompidos, como a recuperação do apexsql, mas não tenho certeza se algum deles pode realmente ler um backup.

    • 3
  2. Milena Petrovic
    2013-10-24T00:30:13+08:002013-10-24T00:30:13+08:00

    Como Sebastian disse, o ApexSQL Recover pode ser usado para se recuperar da corrupção, mas não parece ser a solução certa neste cenário. A opção de recuperar de um banco de dados corrompido ou de um arquivo MDF lê apenas os bancos de dados online e os arquivos MDF desanexados. Ele não lê backups de banco de dados corrompidos

    Há outra opção no ApexSQL Recover que lê backups corrompidos, que é Recuperar dados da tabela de um backup de banco de dados. No entanto, observe que ele recupera apenas os dados da tabela e cria um script INSERT, portanto, não pode ser usado para mover todo o banco de dados para uma versão mais recente do SQL Server

    Existem outras ferramentas ApexSQL que podem ajudar, pois elas leem backups de banco de dados - ApexSQL Diff e ApexSQL Data Diff . Como o backup não está gravemente corrompido, eles podem lê-lo. Ambas as ferramentas leem bancos de dados online e backups de banco de dados, elas também podem ser usadas se você tiver um banco de dados SQL Server 2005 online que deseja atualizar para SQL Server 2008 R2

    ApexSQL Diff é uma ferramenta de comparação e sincronização de banco de dados do SQL Server que detecta diferenças entre objetos de banco de dados em bancos de dados ativos e com versão, backups, instantâneos e pastas de script. Comparar seu banco de dados SQL Server 2005 ativo ou backup de banco de dados com um destino SQL Server 2008 em branco cria os objetos SQL que existem na origem (ou seja, banco de dados SQL Server 2005)

    Depois de recuperar a estrutura do banco de dados, use o ApexSQL Data Diff para recuperar os dados

    Você pode encontrar as etapas recomendadas aqui:

    Migrar um banco de dados do SQL Server para uma versão mais recente do SQL Server

    Crie um script de banco de dados a partir de um backup sem restaurá-lo

    Isenção de responsabilidade: trabalho para ApexSQL como engenheiro de suporte

    • 0

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Conceder acesso a todas as tabelas para um usuário

    • 5 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve