Reakiru Koruptitan SQL Server MDF-datumbazo

Kiam vi SQL Server MDF-datumbazo estas korupta, vi povas uzi la jenajn metodojn por reakiri la datumojn en ĝi, por redukti la perdon:

Noto: Antaŭ ol fari ajnajn operaciojn de reakiro de datumoj, bonvolu sekurigi viajn koruptajn MDF kaj NDF-datumbazajn dosierojn unue.

  1. Antaŭ ĉio, vi povas provi SQL Server enkonstruita komando DBCC CHECKDB por reakiri vian datumbazon. Supozante, ke la korupta datumbaza dosiero estas 'MyDatabase.mdf', tiam vi povas fari jene por reakiri la datumojn en ĝi:
    1. Restart SQL Server.
    2. Ne faru ajnajn operaciojn.
    3. In SQL Server Management Studio, plenumu la sekvajn SQL-deklarojn:
      use master declare @databasename varchar(255) set @databasename='MyDatabase.mdf' exec sp_dboption @databasename, N'single', N'true' -- Agordu la celdatumbazon al unu-uzanta reĝimo dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false' -- Remeti la celdatumbazon reen al pluruza reĝimo
      

      La deklaro

      dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
      

      povas kaŭzi perdon de iuj datumoj en via datumbazo kiam plenumas la riparan operacion.

      Dum la deklaro

      dbcc checkdb(@databasename,REPAIR_REBUILD)
      

      NE kaŭzos ajnan datumperdon dum la ripara operacio, sed ĝi estas pli tempopostula.

      Do se vi ne estas urĝa, vi unue povas provi plenumi la duan dbcc checkdb deklaron nur, se tiu deklaro ne povas helpi reakiri la datumbazon, tiam vi povas plenumi la unuan kaj duan dbcc checkdb komandojn.

      Post la ripara operacio, vi povas telefoni

      dbcc checkdb('MyDatabase.mdf')
      

      denove por vidi ĉu la datumbazo estas fiksita aŭ ne.

      Pli detalaj informoj pri dbcc checkdb-komando troveblas ĉe https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Se post uzi la metodon 1, dbcc checkdb ankoraŭ raportas erarojn en iuj tabeloj, vi povas provi SQL Server enkonstruita komando DBCC CHECKTABLE por retrovi ĉi tiujn tabelojn en via datumbazo. Supozante, ke la korupta datumbaza dosiero estas 'MyDatabase.mdf' kaj la tabelo, kiun vi volas ripari, estas 'MyTable', tiam vi povas fari jene por ripari ĝin:
    1. Restart SQL Server.
    2. Ne faru ajnajn operaciojn.
    3. In SQL Server Management Studio, plenumu la sekvajn SQL-deklarojn:
      uzu MyDatabase.mdf declare @dbname varchar(255) set @dbname='MyDatabase.mdf' exec sp_dboption @dbname,'ununura uzanto','true' dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS) dbAIR_REILtable','DATABREIL' ) exec sp_dboption @dbname,'ununura uzanto','false'
      

      La deklaro

      dbcc checktable('MiaTabelo',REPAIR_ALLOW_DATA_LOSS)
      

      povas kaŭzi perdon de iuj datumoj en via tabelo kiam plenumas la riparan operacion.

      Dum la deklaro

      dbcc checktable('MiaTabelo',REPAIR_REBUILD)
      

      NE kaŭzos ajnan datumperdon dum la ripara operacio, sed ĝi estas pli tempopostula.

      Do se vi ne estas urĝa, vi unue povas provi plenumi la duan dbcc-kontroleblan deklaron nur, se tiu deklaro ne povas helpi reakiri la datumbazon, tiam vi povas plenumi la unuan kaj duan dbcc-kontroleblan komandojn.

      Post kiam vi kompletigas la riparan operacion por ĉiuj koruptaj tabloj, vi povas voki

      dbcc checkdb('MyDatabase.mdf')
      

      denove por vidi ĉu la tabeloj en la datumbazo estas fiksitaj aŭ ne.

    Pli detalaj informoj pri dbcc-kontrolebla komando troveblas ĉe https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Se metodo 1 kaj 2 ankoraŭ ne povas ripari la koruptan datumbazon aŭ la tabelojn, aŭ se ĉi tiuj metodoj ne povas reakiri la datumojn, kiujn vi volas, tiam vi povas uzi DataNumen SQL Recovery por reakiri la datumojn de via MDF-datumbazo.