Восстановить поврежденный SQL Server База данных МДФ

Когда вы SQL Server База данных MDF повреждена, вы можете использовать следующие методы для восстановления данных в ней, чтобы уменьшить потери:

Примечание. Прежде чем выполнять какие-либо операции по восстановлению данных, сначала сделайте резервную копию поврежденных файлов баз данных MDF и NDF.

  1. Прежде всего, вы можете попробовать SQL Server встроенная команда DBCC CHECKDB для восстановления вашей базы данных. Предполагая, что поврежденный файл базы данных называется «MyDatabase.mdf», вы можете сделать следующее, чтобы восстановить данные внутри него:
    1. Restart SQL Server.
    2. Не выполняйте никаких операций.
    3. In SQL Server Management Studio выполните следующие операторы SQL:
      use 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/en-us/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. Restart SQL Server.
    2. Не выполняйте никаких операций.
    3. In SQL Server Management Studio выполните следующие операторы SQL:
      использовать MyDatabase.mdf объявлять @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, 'один пользователь', 'ложь'
      

      Заявление

      контрольная таблица dbcc('MyTable',REPAIR_ALLOW_DATA_LOSS)
      

      может привести к потере некоторых данных в вашей таблице при выполнении операции восстановления.

      В то время как заявление

      контрольная таблица dbcc('MyTable',REPAIR_REBUILD)
      

      НЕ приведет к потере данных во время операции восстановления, но это займет больше времени.

      Таким образом, если вы не в срочном порядке, вы можете сначала попытаться выполнить только второй оператор контрольной таблицы dbcc, если этот оператор не может помочь восстановить базу данных, вы можете выполнить первую и вторую команды контрольной таблицы dbcc.

      После того, как вы завершите операцию восстановления для всех поврежденных таблиц, вы можете вызвать

      dbcc checkdb('MyDatabase.mdf')
      

      еще раз, чтобы увидеть, фиксированы ли таблицы в базе данных или нет.

    Более подробную информацию о команде dbcc checktable можно найти по адресу https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Если методы 1 и 2 по-прежнему не могут исправить поврежденную базу данных или таблицы или если эти методы не могут восстановить нужные данные, вы можете использовать DataNumen SQL Recovery для восстановления данных из вашей базы данных MDF.