Recupere um Corrompido SQL Server banco de dados MDF

Quando você SQL Server O banco de dados MDF está corrompido, você pode usar os seguintes métodos para recuperar os dados nele, para reduzir a perda:

Nota: Antes de executar qualquer operação de recuperação de dados, primeiro faça backup de seus arquivos de banco de dados MDF e NDF corrompidos.

  1. Em primeiro lugar, você pode tentar SQL Server comando embutido DBCC CHECKDB para recuperar seu banco de dados. Supondo que o arquivo de banco de dados corrompido seja 'MyDatabase.mdf', você pode fazer o seguinte para recuperar os dados dentro dele:
    1. Restart SQL Server.
    2. Não execute nenhuma operação.
    3. In SQL Server Management Studio, execute as seguintes instruções SQL:
      use master declare @databasename varchar(255) set @databasename='MyDatabase.mdf' exec sp_dboption @databasename, N'single', N'true' -- Defina o banco de dados de destino para o modo de usuário único dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false' -- Define o banco de dados de destino de volta para o modo multiusuário
      

      A declaração

      dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
      

      pode causar perda de alguns dados em seu banco de dados ao executar a operação de reparo.

      Enquanto a declaração

      dbcc checkdb(@nome do banco de dados,REPAIR_REBUILD)
      

      NÃO causará nenhuma perda de dados durante a operação de reparo, mas é mais demorado.

      Portanto, se você não estiver com urgência, primeiro tente executar apenas a segunda instrução dbcc checkdb; se essa instrução não puder ajudar a recuperar o banco de dados, você poderá executar o primeiro e o segundo comandos dbcc checkdb.

      Após a operação de reparo, você pode ligar

      dbcc checkdb('MyDatabase.mdf')
      

      novamente para ver se o banco de dados está corrigido ou não.

      Informações mais detalhadas sobre o comando dbcc checkdb podem ser encontradas em https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Se depois de usar o método 1, dbcc checkdb ainda relatar erros em algumas tabelas, você pode tentar SQL Server comando interno DBCC CHECKTABLE para recuperar essas tabelas em seu banco de dados. Supondo que o arquivo de banco de dados corrompido seja 'MyDatabase.mdf' e a tabela que você deseja reparar seja 'MyTable', faça o seguinte para repará-lo:
    1. Restart SQL Server.
    2. Não execute nenhuma operação.
    3. In SQL Server Management Studio, execute as seguintes instruções SQL:
      use MyDatabase.mdf declare @dbname varchar(255) set @dbname='MyDatabase.mdf' exec sp_dboption @dbname,'single user','true' dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS) dbcc checktable('MyTable',REPAIR_REBUILD ) exec sp_dboption @dbname,'único usuário','falso'
      

      A declaração

      dbcc checktable('MinhaTabela',REPAIR_ALLOW_DATA_LOSS)
      

      pode causar perda de alguns dados em sua tabela ao executar a operação de reparo.

      Enquanto a declaração

      tabela de verificação dbcc('MinhaTabela',REPAIR_REBUILD)
      

      NÃO causará nenhuma perda de dados durante a operação de reparo, mas é mais demorado.

      Portanto, se você não estiver com urgência, primeiro tente executar apenas a segunda instrução dbcc checktable; se essa instrução não puder ajudar a recuperar o banco de dados, você poderá executar o primeiro e o segundo comandos dbcc checktable.

      Depois de concluir a operação de reparo de todas as tabelas corrompidas, você pode chamar

      dbcc checkdb('MyDatabase.mdf')
      

      novamente para ver se as tabelas no banco de dados são fixas ou não.

    Informações mais detalhadas sobre o comando dbcc checktable podem ser encontradas em https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Se os métodos 1 e 2 ainda não puderem corrigir o banco de dados corrompido ou as tabelas, ou se esses métodos não puderem recuperar os dados desejados, você poderá usar DataNumen SQL Recovery para recuperar os dados de seu banco de dados MDF.