Recuperar un corrupto SQL Server Base de datos MDF

Cando SQL Server A base de datos MDF está corrupta, pode utilizar os seguintes métodos para recuperar os datos nela, para reducir a perda:

Nota: Antes de realizar calquera operación de recuperación de datos, primeiro faga unha copia de seguridade dos ficheiros da base de datos MDF e NDF corruptos.

  1. En primeiro lugar, podes probar SQL Server comando incorporado DBCC CHECKDB para recuperar a súa base de datos. Asumindo que o ficheiro da base de datos corrupto é 'MyDatabase.mdf', podes facer o seguinte para recuperar os datos dentro del:
    1. Restart SQL Server.
    2. Non realice ningunha operación.
    3. In SQL Server Management Studio, execute as seguintes instrucións SQL:
      use master declare @databasename varchar(255) set @databasename='MyDatabase.mdf' exec sp_dboption @databasename, N'single', N'true' -- Establece a base de datos de destino en modo de usuario único dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false' -- Devolve a base de datos de destino ao modo multiusuario
      

      A declaración

      dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
      

      pode provocar a perda dalgúns datos da súa base de datos ao realizar a operación de reparación.

      Mentres a declaración

      dbcc checkdb(@databasename,REPAIR_REBUILD)
      

      NON causará ningunha perda de datos durante a operación de reparación, pero leva máis tempo.

      Polo tanto, se non é urxente, primeiro pode tentar realizar a segunda instrución dbcc checkdb só, se esa instrución non pode axudar a recuperar a base de datos, entón pode realizar o primeiro e o segundo comando dbcc checkdb.

      Despois da operación de reparación, pode chamar

      dbcc checkdb('A miña base de datos.mdf')
      

      de novo para ver se a base de datos está corrixida ou non.

      Pódese atopar información máis detallada sobre o comando dbcc checkdb en https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Se despois de usar o método 1, dbcc checkdb aínda informa de erros nalgunhas táboas, podes intentalo SQL Server comando incorporado DBCC CHECKTABLE para recuperar estas táboas na súa base de datos. Asumindo que o ficheiro da base de datos corrupto é "MyDatabase.mdf" e que a táboa que queres reparar é "MyTable", podes facer o seguinte para reparalo:
    1. Restart SQL Server.
    2. Non realice ningunha operación.
    3. In SQL Server Management Studio, execute as seguintes instrucións 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) dbAIR_REILREIL','DPyTable ) exec sp_dboption @dbname,'usuario único','false'
      

      A declaración

      dbcc checktable('A miña táboa',REPAIR_ALLOW_DATA_LOSS)
      

      pode provocar a perda dalgúns datos da súa táboa ao realizar a operación de reparación.

      Mentres a declaración

      dbcc checktable('A miña táboa',REPAIR_REBUILD)
      

      NON causará ningunha perda de datos durante a operación de reparación, pero leva máis tempo.

      Polo tanto, se non é urxente, primeiro pode tentar realizar só a segunda instrución da táboa de verificación dbcc, se esa instrución non pode axudar a recuperar a base de datos, pode realizar o primeiro e o segundo comando de táboa de verificación dbcc.

      Despois de completar a operación de reparación de todas as táboas corruptas, pode chamar

      dbcc checkdb('A miña base de datos.mdf')
      

      de novo para ver se as táboas da base de datos están fixas ou non.

    Pódese atopar información máis detallada sobre o comando dbcc checktable en 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 aínda non poden arranxar a base de datos corrupta ou as táboas, ou se estes métodos non poden recuperar os datos que desexa, pode utilizar DataNumen SQL Recovery para recuperar os datos da súa base de datos MDF.