Как исправить проблему SQL Server ‘Невозможно открыть базу данных’ из-за повреждения MDF?

Файл основной базы данных (MDF) является основным файлом базы данных в MS SQL Server, который хранит все данные, включая представления, таблицы, хранимые процедуры, внешние ключи и первичные ключи. Иногда, при открытии файла MDF, вы можете столкнуться с проблемой, когда база данных SQL Server не может быть открыта, и возникнет ошибка, как показано ниже:

  • Ошибка SQL Server 5171: MDF не является файлом основной базы данных
  • Не удается открыть файл xxxxx.mdf. Ошибка операционной системы 5: (Доступ запрещен)”
  • Идентификатор события 824: SQL Server обнаружил логическую ошибку целостности ввода-вывода
  • Сообщение 8114, уровень 16, состояние 5, строка 2: Ошибка преобразования типа данных varchar в numeric

Такие ошибки обычно возникают, когда происходит повреждение файла MDF. В этой статье мы объясним возможные причины повреждения файлов MDF и покажем, как восстановить поврежденные файлы MDF и решить проблему.

Причины повреждения файла MDF

Существует множество причин, которые могут привести к повреждению файла базы данных SQL Server (MDF). Некоторые из распространенных приведены ниже:

Сбой MS SQL Server или системы

MS SQL Server или система могут сбоить из-за проблем с операционной системой, оборудованием или программным обеспечением. Если сервер или система сбойнет при работе с файлом MDF, это может повредить или испортить файл.

Внезапное завершение работы системы

Внезапное отключение питания или принудительное выключение системы во время работы SQL Server может повредить файл MDF, хранящийся на вашей системе.

Атаки вредоносными программами или вирусами

Вредоносные программы или вирусы также могут повредить файлы MDF и сделать их недоступными. Обычно это происходит, когда на вашей системе отсутствует антивирусное или анти-вредоносное программное обеспечение.

Проблемы с накопителем данных

Плохие сектора на накопителе данных или ошибки файловой системы могут повредить файлы базы данных SQL. Если накопитель поврежден, то это также может вызвать повреждение файлов MDF.

Методы решения проблемы “Невозможно открыть базу данных” из-за повреждения файла MDF

Если ваш файл MDF поврежден, вы можете воспользоваться нижеперечисленными методами для восстановления поврежденного файла MDF и тем самым устранения проблемы “Невозможно открыть базу данных” в SQL Server.

Метод 1: Восстановление файла MDF из резервной копии

Если у вас есть резервная копия вашего файла MDF, вы можете восстановить файл из резервной копии. Но перед восстановлением нужно убедиться, что ваша резервная копия полная и читаема. Для этого вы можете использовать команду RESTORE VERIFY ONLY. Если эта команда показывает успешное сообщение, то можно приступать к восстановлению резервной копии. Для этого используйте следующую команду Transact SQL:

MS SQL

 

В качестве альтернативы вы можете использовать SQL Server Management Studio (SSMS) для восстановления резервной копии.

Метод 2: Использование команды DBCC CHECKDB

Если резервная копия не обновлена или возникла проблема во время восстановления резервной копии, то вы можете использовать команду DBCC CHECKDB для восстановления поврежденного файла MDF. Для восстановления базы данных необходимо убедиться, что у вас есть права администратора в базе данных. Перед восстановлением установите базу данных в режим однопользовательского доступа, используя следующую команду:

MS SQL

 

Если вы не можете установить базу данных в режим SINGLE_USER, убедитесь, что опция AUTO_UPDATE_STATISTICS_ASYNC установлена в OFF.

Затем запустите команду DBCC CHECKDB, как показано ниже, чтобы восстановить базу данных (MDF):

MS SQL

 

После восстановления базы данных снова установите ее в режим MULTI_USER, используя следующую команду:

MS SQL

 

Примечание: Команда DBCC CHECKDB может помочь восстановить файл MDF. Однако при восстановлении файла она может освободить страницы или строки, что может привести к потере данных. 

Метод 3: Использование профессионального инструмента для восстановления SQL

Восстановление базы данных SQL с помощью команды DBCC CHECKDB с опцией REPAIR_ALLOW_DATA_LOSS может привести к потере данных. Чтобы избежать потери данных, можно использовать мощное программное обеспечение для восстановления MS SQL, например Stellar Repair for MS SQL. Это программное обеспечение может восстановить поврежденные файлы MDF и восстановить все объекты файлов, такие как первичные ключи, таблицы, триггеры, представления и т. д., без изменения исходной структуры. Оно сохраняет восстановленные данные файла в новом файле MDF и различных других форматах, таких как CSV, HTML и XLS. Программа поддерживает файлы баз данных SQL (MDF и NDF), созданные в системах Windows и Linux. 

В заключение

Проблема “База данных не может быть открыта” в MS SQL Server может возникнуть из-за повреждения файла MDF. Чтобы исправить эту проблему, самым простым способом является восстановление файла MDF из последнего резервного копирования. Если резервная копия устарела или не работает, можно использовать команду DBCC CHECKDB для восстановления поврежденного файла MDF. Если команда DBCC CHECKDB не удается восстановить базу данных, то используйте мощный инструмент для восстановления SQL, например Stellar Repair for MS SQL. Он может восстановить поврежденные файлы MDF и восстановить все данные в новом файле MDF с полной целостностью. Вы можете установить бесплатную версию Stellar Repair for MS SQL для сканирования поврежденного файла MDF и предварительного просмотра восстанавливаемых данных.

Source:
https://dzone.com/articles/resolve-sql-server-database-cannot-be-opened-mdf-issue