Herstel 'n korrupte SQL Server MDF-databasis

Wanneer jy SQL Server MDF-databasis is korrup, jy kan die volgende metodes gebruik om die data daarin te herstel, om die verlies te verminder:

Let wel: Voordat u enige dataherwinningsbewerkings uitvoer, moet u eers u korrupte MDF- en NDF-databasislêers rugsteun.

  1. Eerstens kan jy probeer SQL Server ingeboude opdrag DBCC CHECKDB om jou databasis te herstel. Gestel die korrupte databasislêer is 'MyDatabase.mdf', dan kan jy soos volg doen om die data daarin te herstel:
    1. Restart SQL Server.
    2. Moenie enige operasies uitvoer nie.
    3. In SQL Server Management Studio, voer die volgende SQL-stellings uit:
      gebruik meester verklaar @databasisnaam varchar(255) stel @databasisnaam='MyDatabase.mdf' exec sp_dboption @databasisnaam, N'single', N'true' -- Stel die bestemmingsdatabasis op enkelgebruikermodus dbcc checkdb(@databasisnaam,REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb(@databasisnaam,REPAIR_REBUILD) exec sp_dboption @databasisnaam, N'single', N'false' -- Stel die bestemmingsdatabasis terug na multigebruikermodus
      

      Die staat

      dbcc checkdb(@databasisnaam,REPAIR_ALLOW_DATA_LOSS)
      

      kan verlies van sommige data in jou databasis veroorsaak wanneer die herstelbewerking uitgevoer word.

      Terwyl die verklaring

      dbcc checkdb(@databasisnaam,REPAIR_REBUILD)
      

      sal NIE enige dataverlies tydens die herstelbewerking veroorsaak nie, maar dit is meer tydrowend.

      So as jy nie dringend is nie, kan jy eers probeer om net die tweede dbcc checkdb stelling uit te voer, as daardie stelling nie kan help om die databasis te herstel nie, dan kan jy die eerste en tweede dbcc checkdb opdragte uitvoer.

      Na die herstel operasie, kan jy bel

      dbcc checkdb('MyDatabase.mdf')
      

      weer om te sien of die databasis reggestel is of nie.

      Meer gedetailleerde inligting oor dbcc checkdb-opdrag kan gevind word by https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. As na die gebruik van metode 1, dbcc checkdb steeds foute in sommige tabelle rapporteer, kan jy probeer SQL Server ingeboude opdrag DBCC CHECKTABLE om hierdie tabelle in jou databasis te herstel. Gestel die korrupte databasislêer is 'MyDatabase.mdf' en die tabel wat jy wil herstel is 'MyTable', dan kan jy soos volg doen om dit te herstel:
    1. Restart SQL Server.
    2. Moenie enige operasies uitvoer nie.
    3. In SQL Server Management Studio, voer die volgende SQL-stellings uit:
      gebruik MyDatabase.mdf declare @dbname varchar(255) stel @dbname='MyDatabase.mdf' exec sp_dboption @dbname,'enkel gebruiker','true' dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS)'dbcc_checktable',DPAIR_checkable' ) exec sp_dboption @dbnaam, 'enkel gebruiker', 'vals'
      

      Die staat

      dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS)
      

      kan verlies van sommige data in jou tabel veroorsaak wanneer die herstelbewerking uitgevoer word.

      Terwyl die verklaring

      dbcc checktable('MyTable',REPAIR_REBUILD)
      

      sal NIE enige dataverlies tydens die herstelbewerking veroorsaak nie, maar dit is meer tydrowend.

      As jy dus nie dringend is nie, kan jy eers probeer om die tweede dbcc-kontroletabelstelling slegs uit te voer, as daardie stelling nie kan help om die databasis te herstel nie, dan kan jy die eerste en tweede dbcc-kontroletabelopdragte uitvoer.

      Nadat jy die herstelbewerking vir al die korrupte tabelle voltooi het, kan jy bel

      dbcc checkdb('MyDatabase.mdf')
      

      weer om te sien of die tabelle in die databasis reggestel is of nie.

    Meer gedetailleerde inligting oor dbcc checktable-opdrag kan gevind word by https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. As metode 1 en 2 steeds nie die korrupte databasis of die tabelle kan herstel nie, of as hierdie metodes nie die data kan herstel wat jy wil hê nie, kan jy gebruik DataNumen SQL Recovery om die data van jou MDF-databasis te herstel.