Endurheimtu spilltan SQL Server MDF gagnagrunnur

Þegar þú SQL Server MDF gagnagrunnur er skemmdur, þú getur notað eftirfarandi aðferðir til að endurheimta gögnin í honum, til að draga úr tapinu:

Athugið: Áður en þú framkvæmir gagnabataaðgerðir skaltu vinsamlega taka öryggisafrit af skemmdum MDF og NDF gagnagrunnsskrám fyrst.

  1. Fyrst af öllu geturðu prófað SQL Server innbyggð skipun DBCC CHECKDB til að endurheimta gagnagrunninn þinn. Að því gefnu að spillta gagnagrunnsskráin sé 'MyDatabase.mdf', þá geturðu gert eftirfarandi til að endurheimta gögnin í henni:
    1. Restart SQL Server.
    2. Ekki framkvæma neinar aðgerðir.
    3. In SQL Server Management Studio, framkvæma eftirfarandi SQL staðhæfingar:
      notaðu master declare @databasename varchar(255) set @databasename='MyDatabase.mdf' exec sp_dboption @databasename, N'single', N'true' -- Stilltu áfangagagnagrunninn á einn notandaham dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false' -- Stilltu áfangagagnagrunninn aftur í fjölnotendaham
      

      Yfirlýsingin

      dbcc checkdb (@gagnagrunnsnafn, REPAIR_ALLOW_DATA_LOSS)
      

      getur valdið tapi á sumum gögnum í gagnagrunninum þínum þegar viðgerðaraðgerðin er framkvæmd.

      Á meðan yfirlýsingin

      dbcc checkdb(@gagnagrunnsnafn,REPAIR_REBUILD)
      

      mun EKKI valda neinu gagnatapi meðan á viðgerð stendur, en það er tímafrekara.

      Svo ef þú ert ekki á brýn, getur þú fyrst reynt að framkvæma seinni dbcc checkdb setninguna eingöngu, ef sú setning getur ekki hjálpað til við að endurheimta gagnagrunninn, þá geturðu framkvæmt fyrstu og aðra dbcc checkdb skipunina.

      Eftir viðgerðaraðgerðina geturðu hringt

      dbcc checkdb('MyDatabase.mdf')
      

      aftur til að sjá hvort gagnagrunnurinn sé lagaður eða ekki.

      Nánari upplýsingar um dbcc checkdb skipunina er að finna á https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Ef eftir að hafa notað aðferð 1, dbcc checkdb tilkynnir enn villur í sumum töflum, geturðu reynt SQL Server innbyggða skipunina DBCC CHECKTABLE til að endurheimta þessar töflur í gagnagrunninum þínum. Að því gefnu að spillta gagnagrunnsskráin sé 'MyDatabase.mdf' og taflan sem þú vilt gera við sé 'MyTable', þá geturðu gert eftirfarandi til að gera við hana:
    1. Restart SQL Server.
    2. Ekki framkvæma neinar aðgerðir.
    3. In SQL Server Management Studio, framkvæma eftirfarandi SQL staðhæfingar:
      nota MyDatabase.mdf declare @dbname varchar(255) set @dbname='MyDatabase.mdf' exec sp_dboption @dbname,'single user','true' dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS)'MyDatabase.mdf' ) exec sp_dboption @dbname,'single user','false'
      

      Yfirlýsingin

      dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS)
      

      getur valdið tapi á sumum gögnum í töflunni þinni þegar viðgerðaraðgerðin er framkvæmd.

      Á meðan yfirlýsingin

      dbcc checktable('MyTable',REPAIR_REBUILD)
      

      mun EKKI valda neinu gagnatapi meðan á viðgerð stendur, en það er tímafrekara.

      Svo ef þú ert ekki á brýn, getur þú fyrst reynt að framkvæma seinni dbcc checktable yfirlýsinguna eingöngu, ef sú yfirlýsing getur ekki hjálpað til við að endurheimta gagnagrunninn, þá geturðu framkvæmt fyrstu og aðra dbcc checktable skipunina.

      Eftir að þú hefur lokið viðgerðaraðgerðinni fyrir öll spilltu borðin geturðu hringt

      dbcc checkdb('MyDatabase.mdf')
      

      aftur til að sjá hvort töflurnar í gagnagrunninum séu fastar eða ekki.

    Nánari upplýsingar um dbcc checktable stjórn er að finna á https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Ef aðferð 1 og 2 geta enn ekki lagað skemmda gagnagrunninn eða töflurnar, eða ef þessar aðferðir geta ekki endurheimt gögnin sem þú vilt, þá geturðu notað DataNumen SQL Recovery til að endurheimta gögnin úr MDF gagnagrunninum þínum.