Възстановяване на повредена SQL Server MDF база данни

Когато вашата SQL Server MDF база данни е повредена, можете да използвате следните методи за възстановяване на данните в нея, за да намалите загубите:

Забележка: Преди да извършвате каквито и да било операции за възстановяване на данни, моля, първо направете резервно копие на вашите повредени MDF & NDF файлове от базата данни.

  1. Първо, можете да опитате вградената команда на SQL Server DBCC CHECKDB , за да възстановите вашата база данни. Предполагайки, че повреденият файл на база данни е 'MyDatabase.mdf', можете да извършите следното, за да възстановите данните в него:
    1. Рестартирайте SQL Server.
    2. Не извършвайте никакви операции.
    3. В SQL Server Management Studio, изпълнете следните SQL команди:
      използвайте master declare @databasename varchar(255) set @databasename='MyDatabase.mdf' exec sp_dboption @databasename, N'single', N'true' -- Задайте на дестинационната база данни единичен потребителски режим dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false' -- Върнете дестинационната база данни в режим за множество потребители
      

      изявление

      dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
      

      може да доведе до загуба на част от данните във вашата база данни при извършване на операцията за ремонт.

      Въпреки че изявлението

      dbcc checkdb(@databasename,REPAIR_REBUILD)
      

      НЯМА да предизвика загуба на данни по време на операцията по ремонт, но отнема повече време.

      Така че ако не сте в спешност, можете първо да опитате да изпълните само втората команда dbcc checkdb, ако тази команда не може да помогне за възстановяването на базата данни, тогава можете да изпълните първата и втората команди dbcc checkdb.

      След операцията по ремонт, можете да повикате

      dbcc checkdb('MyDatabase.mdf')
      

      отново, за да видите дали базата данни е поправена или не.

      Подробна информация за командата dbcc checkdb можете да намерите на https://docs.microsoft.com/bg-bg/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Ако след използването на метод 1, dbcc checkdb все още съобщава за грешки в някои таблици, можете да опитате вградената команда на SQL Server DBCC CHECKTABLE, за да възстановите тези таблици във вашата база данни. Предполагайки, че повреденият файл на базата данни е 'MyDatabase.mdf' и таблицата, която искате да поправите, е 'MyTable', тогава може да направите следните стъпки за нейния ремонт:
    1. Рестартирайте SQL Server.
    2. Не извършвайте никакви операции.
    3. В SQL Server Management Studio, изпълнете следните SQL команди:
      използвай MyDatabase.mdf declare @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_REBUILD) exec sp_dboption @dbname,'single user','false'
      
      

      изявление

      dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS)
      

      може да доведе до загуба на част от данните във вашата таблица при извършване на операцията за ремонт.

      Въпреки че изявлението

      dbcc checktable ('MyTable', REPAIR_REBUILD)
      

      НЯМА да предизвика загуба на данни по време на операцията по ремонт, но отнема повече време.

      Така че, ако не сте в спешност, първо можете да опитате да изпълните само втората команда dbcc checktable, ако тази команда не може да помогне за възстановяване на базата данни, тогава можете да изпълните първата и втората команда dbcc checktable.

      След като завършите операцията по ремонт за всички повредени таблици, можете да извикате

      dbcc checkdb('MyDatabase.mdf')
      

      отново, за да видите дали таблиците в базата данни са поправени или не.

    Подробна информация за командата dbcc checktable може да бъде намерена на https://docs.microsoft.com/bg-bg/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Ако метод 1 и 2 все още не могат да коригират повредената база данни или таблиците, или ако тези методи не могат да възстановят данните, които искате, тогава можете да използвате DataNumen SQL Recovery , за да възстановите данните от вашата MDF база данни.