Recuperează un corupt SQL Server Baza de date MDF

Cand tu SQL Server Baza de date MDF este coruptă, puteți utiliza următoarele metode pentru a recupera datele din ea, pentru a reduce pierderea:

Notă: Înainte de a efectua orice operațiuni de recuperare a datelor, faceți mai întâi o copie de rezervă a fișierelor de bază de date MDF și NDF corupte.

  1. În primul rând, poți încerca SQL Server comandă încorporată DBCC CHECKDB pentru a vă recupera baza de date. Presupunând că fișierul corupt al bazei de date este „MyDatabase.mdf”, atunci puteți face după cum urmează pentru a recupera datele din interiorul acestuia:
    1. Restart SQL Server.
    2. Nu efectuați nicio operațiune.
    3. In SQL Server Management Studio, executați următoarele instrucțiuni SQL:
      use master declare @databasename varchar(255) set @databasename='MyDatabase.mdf' exec sp_dboption @databasename, N'single', N'true' -- Setați baza de date de destinație în modul utilizator unic dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false' -- Setați baza de date destinație înapoi în modul multi-utilizator
      

      Declaratia

      dbcc checkdb(@nume bază de date,REPAIR_ALLOW_DATA_LOSS)
      

      poate cauza pierderea unor date din baza de date atunci când efectuați operația de reparare.

      În timp ce declaraţia

      dbcc checkdb(@nume bază de date,REPAIR_REBUILD)
      

      NU va cauza pierderi de date în timpul operațiunii de reparare, dar este mai consumatoare de timp.

      Deci, dacă nu sunteți urgent, puteți încerca mai întâi să efectuați numai a doua instrucțiune dbcc checkdb, dacă acea instrucțiune nu poate ajuta la recuperarea bazei de date, atunci puteți efectua prima și a doua comandă dbcc checkdb.

      După operațiunea de reparație, puteți suna

      dbcc checkdb('MyDatabase.mdf')
      

      din nou pentru a vedea dacă baza de date este fixă ​​sau nu.

      Informații mai detaliate despre comanda dbcc checkdb pot fi găsite la https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Dacă după utilizarea metodei 1, dbcc checkdb încă raportează erori în unele tabele, puteți încerca SQL Server comanda încorporată DBCC CHECKTABLE pentru a recupera aceste tabele din baza de date. Presupunând că fișierul corupt al bazei de date este „MyDatabase.mdf” și tabelul pe care doriți să îl reparați este „MyTable”, atunci puteți face după cum urmează pentru a-l repara:
    1. Restart SQL Server.
    2. Nu efectuați nicio operațiune.
    3. In SQL Server Management Studio, executați următoarele instrucțiuni SQL:
      folosește 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','DATA_REILREIL' ) exec sp_dboption @dbname,'single user','false'
      

      Declaratia

      dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS)
      

      poate cauza pierderea unor date din tabelul dvs. atunci când efectuați operația de reparare.

      În timp ce declaraţia

      dbcc checktable('MyTable',REPAIR_REBUILD)
      

      NU va cauza pierderi de date în timpul operațiunii de reparare, dar este mai consumatoare de timp.

      Deci, dacă nu sunteți urgent, puteți încerca mai întâi să efectuați numai a doua instrucțiune dbcc checktable, dacă acea instrucțiune nu poate ajuta la recuperarea bazei de date, atunci puteți efectua prima și a doua comenzi dbcc checktable.

      După ce finalizați operațiunea de reparare a tuturor tabelelor corupte, puteți apela

      dbcc checkdb('MyDatabase.mdf')
      

      din nou pentru a vedea dacă tabelele din baza de date sunt fixe sau nu.

    Informații mai detaliate despre comanda dbcc checktable pot fi găsite la https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Dacă metoda 1 și 2 încă nu pot remedia baza de date coruptă sau tabelele sau dacă aceste metode nu pot recupera datele dorite, atunci puteți utiliza DataNumen SQL Recovery pentru a recupera datele din baza de date MDF.