Pata Ufisadi SQL Server Hifadhidata ya MDF

wakati wewe SQL Server Hifadhidata ya MDF ni mbovu, unaweza kutumia njia zifuatazo kupata data ndani yake, ili kupunguza upotezaji:

Kumbuka: Kabla ya kufanya shughuli zozote za kupona data, tafadhali chelezo faili zako za hifadhidata za MDF na NDF kwanza.

  1. Kwanza kabisa, unaweza kujaribu SQL Server amri iliyojengwa DBCC CHECKDB kuokoa hifadhidata yako. Kwa kudhani faili ya hifadhidata ya hifadhidata ni 'MyDatabase.mdf', basi unaweza kufanya kama ifuatavyo kupata data ndani yake:
    1. Restart SQL Server.
    2. Usifanye shughuli yoyote.
    3. In SQL Server Studio ya Usimamizi, fanya taarifa zifuatazo za SQL:
      tumia master declare @databasename varchar (255) set @ databasename = 'MyDatabase.mdf' exec sp_dboption @databasename, N'single ', N'true' - Weka hifadhidata ya marudio kwa mfumo wa moja-dbcc checkdb (@ databasename, REPAIR_ALLOW_DATA_LOSS dbcc checkdb (@ databasename, REPAIR_REBUILD) fanya sp_dboption @databasename, N'single ', N'false' - Weka hifadhidata ya marudio kurudi kwenye hali ya watumiaji wengi
      

      Taarifa hiyo

      dbcc checkdb (@ databasename, REPAIR_ALLOW_DATA_LOSS)
      

      inaweza kusababisha upotezaji wa data kwenye hifadhidata yako wakati wa kufanya operesheni ya ukarabati.

      Wakati taarifa hiyo

      dbcc checkdb (@ databasename, REPIR_REBUILD)
      

      HAIWEZI kusababisha upotezaji wa data wakati wa operesheni ya ukarabati, lakini inachukua muda zaidi.

      Kwa hivyo ikiwa hauko haraka, unaweza kujaribu kwanza kutoa taarifa ya pili ya dbcc checkdb tu, ikiwa taarifa hiyo haiwezi kusaidia kupata hifadhidata, basi unaweza kutekeleza amri ya kwanza na ya pili ya dbcc checkdb.

      Baada ya operesheni ya ukarabati, unaweza kupiga simu

      dbcc checkdb ('MyDatabase.mdf')
      

      tena kuona ikiwa hifadhidata imewekwa au la.

      Maelezo zaidi juu ya amri ya dbcc checkdb inaweza kupatikana kwa https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Ikiwa baada ya kutumia njia 1, dbcc checkdb bado inaripoti makosa kwenye meza zingine, unaweza kujaribu SQL Server amri iliyojengwa DBCC INAANGALIKA ili kurejesha meza hizi kwenye hifadhidata yako. Kufikiria faili ya hifadhidata ya hifadhidata ni 'MyDatabase.mdf' na meza unayotaka kukarabati ni 'MyTable', basi unaweza kufanya kama ifuatavyo kuitengeneza:
    1. Restart SQL Server.
    2. Usifanye shughuli yoyote.
    3. In SQL Server Studio ya Usimamizi, fanya taarifa zifuatazo za SQL:
      tumia MyDatabase.mdf tangaza @dbname varchar (255) set @ dbname = 'MyDatabase.mdf' exec sp_dboption @ dbname, 'single user', 'true' dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS) dbcc checktable ('MyTable', REPAIR_REBU fanya sp_dboption @ dbname, 'mtumiaji mmoja', 'uwongo'
      

      Taarifa hiyo

      kuangalia kwa dbcc ('MyTable', REPAIR_ALLOW_DATA_LOSS)
      

      inaweza kusababisha upotezaji wa data kwenye meza yako wakati wa kufanya operesheni ya ukarabati.

      Wakati taarifa hiyo

      kuangalia kwa dbcc ('MyTable', REPAIR_REBUILD)
      

      HAIWEZI kusababisha upotezaji wa data wakati wa operesheni ya ukarabati, lakini inachukua muda zaidi.

      Kwa hivyo ikiwa hauko haraka, unaweza kujaribu kwanza kutoa taarifa ya pili ya dbcc ya kuangalia tu, ikiwa taarifa hiyo haiwezi kusaidia kupata hifadhidata, basi unaweza kutekeleza amri ya kwanza na ya pili ya dbcc ya kuangalia.

      Baada ya kukamilisha operesheni ya ukarabati wa meza zote za rushwa, unaweza kupiga simu

      dbcc checkdb ('MyDatabase.mdf')
      

      tena kuona ikiwa meza zilizo kwenye hifadhidata zimewekwa sawa au la.

    Maelezo zaidi juu ya dbcc amri ya kuangalia inaweza kupatikana katika https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Ikiwa njia ya 1 na 2 bado haiwezi kurekebisha hifadhidata au meza, au ikiwa njia hizi haziwezi kupata data unayotaka, basi unaweza kutumia DataNumen SQL Recovery kupata data kutoka kwa hifadhidata yako ya MDF.