Recuperar un corrupte SQL Server Base de dades MDF

Quan es SQL Server La base de dades MDF està corrupta, podeu utilitzar els mètodes següents per recuperar les dades que hi ha, per reduir la pèrdua:

Nota: abans de realitzar qualsevol operació de recuperació de dades, primer feu una còpia de seguretat dels fitxers de base de dades MDF i NDF corruptes.

  1. Primer de tot, pots provar SQL Server comandament integrat DBCC CHECKDB per recuperar la vostra base de dades. Suposant que el fitxer de base de dades corrupte és 'MyDatabase.mdf', podeu fer el següent per recuperar les dades que hi ha dins:
    1. Restart SQL Server.
    2. No feu cap operació.
    3. In SQL Server Management Studio, executeu les instruccions SQL següents:
      use master declare @databasename varchar(255) set @databasename='MyDatabase.mdf' exec sp_dboption @databasename, N'single', N'true' -- Establiu la base de dades de destinació en mode d'usuari únic dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false' -- Torneu a establir la base de dades de destinació en mode multiusuari
      

      La declaració

      dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
      

      pot provocar la pèrdua d'algunes dades de la vostra base de dades quan realitzeu l'operació de reparació.

      Mentre la declaració

      dbcc checkdb(@databasename,REPAIR_REBUILD)
      

      NO provocarà cap pèrdua de dades durant l'operació de reparació, però requereix més temps.

      Per tant, si no sou urgent, primer podeu provar de realitzar la segona instrucció dbcc checkdb només, si aquesta instrucció no pot ajudar a recuperar la base de dades, podeu executar la primera i la segona ordre dbcc checkdb.

      Després de l'operació de reparació, podeu trucar

      dbcc checkdb('La meva base de dades.mdf')
      

      de nou per veure si la base de dades està arreglada o no.

      Podeu trobar informació més detallada sobre l'ordre dbcc checkdb a https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Si després d'utilitzar el mètode 1, dbcc checkdb encara informa d'errors en algunes taules, podeu provar-ho SQL Server comanda integrada DBCC CHECKTABLE per recuperar aquestes taules a la vostra base de dades. Suposant que el fitxer de base de dades corrupte és 'MyDatabase.mdf' i la taula que voleu reparar és 'MyTable', podeu fer el següent per reparar-lo:
    1. Restart SQL Server.
    2. No feu cap operació.
    3. In SQL Server Management Studio, executeu les instruccions SQL següents:
      utilitzeu MyDatabase.mdf declara @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,'usuari únic','fals'
      

      La declaració

      dbcc checktable('La meva taula', REPAIR_ALLOW_DATA_LOSS)
      

      pot provocar la pèrdua d'algunes dades de la taula quan realitzeu l'operació de reparació.

      Mentre la declaració

      dbcc checktable('La meva taula',REPAIR_REBUILD)
      

      NO provocarà cap pèrdua de dades durant l'operació de reparació, però requereix més temps.

      Per tant, si no sou urgent, primer podeu provar de realitzar la segona instrucció dbcc checktable només, si aquesta instrucció no pot ajudar a recuperar la base de dades, podeu executar la primera i la segona ordre dbcc checktable.

      Després de completar l'operació de reparació de totes les taules corruptes, podeu trucar

      dbcc checkdb('La meva base de dades.mdf')
      

      de nou per veure si les taules de la base de dades estan arreglades o no.

    Podeu trobar informació més detallada sobre l'ordre dbcc checktable a https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Si els mètodes 1 i 2 encara no poden arreglar la base de dades corrupta o les taules, o si aquests mètodes no poden recuperar les dades que voleu, podeu utilitzar DataNumen SQL Recovery per recuperar les dades de la vostra base de dades MDF.