Как восстановить файлы базы данных Microsoft SQL Server 2022 (MDF, LDF и BAK)
В этой статье мы рассмотрим, как восстановить файлы базы данных Microsoft SQL Server 2022. Покажем, что делать, если база данных или ее файлы были случайно удалены, а также как использовать доступную резервную копию, чтобы вернуть базу данных в рабочее состояние.

- Особенности SQL Server
- Как получить доступ к дискам сервера
- Как восстановить удаленную базу данных SQL Server 2022
- Заключение
- Часто задаваемые вопросы
- Комментарии
Для восстановления файлов мы будем использовать Hetman RAID Recovery. Программа может находить файлы MDF, LDF и BAK на физических дисках, RAID-массивах и динамических дисках, а также работать с образами дисков, созданными посекторно. Восстановленные файлы затем можно использовать для Restore или Attach средствами Microsoft SQL Server.
Hetman RAID Recovery поддерживает Windows, Linux и macOS.
Как восстановить удалённую базу данных SQL Server 2022? MDF, LDF и BAK
Особенности SQL Server
Какие файлы использует Microsoft SQL Server и почему они важны при восстановлении:
- MDF — основной файл базы данных. Он содержит структуру базы данных, таблицы, записи, индексы и другие объекты. Этот файл является основным источником данных, когда требуется вернуть удаленную базу данных в SQL Server.
- LDF — файл журнала транзакций. SQL Server записывает в него изменения базы данных. Журнал используется для поддержания согласованности данных и является важным компонентом при подключении базы данных из ее физических файлов.
- BAK — файл резервной копии. В нашем тесте это полная резервная копия базы данных, созданная SQL Server. Если такой файл доступен и не поврежден, его можно использовать для Restore без необходимости подключать исходные файлы MDF и LDF.
Следовательно, сценарий восстановления зависит от того, какие файлы были сохранены или найдены:
- Если доступен файл BAK, база данных восстанавливается из резервной копии.
- Если резервной копии нет, но файлы MDF и LDF были восстановлены, их можно использовать для Attach, при условии, что файлы остаются читаемыми и согласованными.
| Функция | Описание |
|---|---|
| Реляционная модель данных | SQL Server хранит информацию в таблицах, связанных друг с другом с помощью ключей и ограничений. |
| Язык запросов T-SQL | Расширение SQL, используемое для создания запросов, управления данными, написания процедур и выполнения административных операций. |
| Файлы базы данных MDF и NDF | MDF — основной файл данных базы данных, а NDF — дополнительный файл данных. Они содержат таблицы, индексы и другие объекты базы данных. |
| Файл журнала транзакций LDF | Хранит записи о транзакциях и изменениях в базе данных. Журнал используется для аварийного восстановления и поддержания согласованности данных. |
| Резервное копирование и восстановление | SQL Server поддерживает полные, дифференциальные резервные копии и резервные копии журнала транзакций, что позволяет восстановить базу данных до требуемого момента времени при соответствующей настройке. |
| Транзакции и ACID | Обеспечивают атомарность, согласованность, изолированность и долговечность операций с данными. |
| Индексы | Ускоряют поиск и выполнение запросов, но могут быть повреждены или потребовать перестроения после определенных сбоев. |
| Механизмы контроля целостности | Первичные и внешние ключи, ограничения и проверки помогают поддерживать корректность данных. |
| Модели восстановления | Модели восстановления Simple, Full и Bulk-logged определяют возможности резервного копирования журнала транзакций и варианты восстановления базы данных. |
| Средства диагностики | Команда DBCC CHECKDB проверяет логическую и физическую целостность базы данных и помогает выявить повреждения. |
Для тестирования мы подготовили Windows Server 2022 с Microsoft SQL Server 2022. База данных TestDB расположена на динамическом составном томе с файловой системой NTFS. Она содержит таблицы, тестовые записи клиентов и файлы, хранящиеся в поле VARBINARY(MAX). Файл MDF хранится в каталоге SQLData, файл журнала LDF — в SQLLogs, а полная резервная копия TestDB_Full.bak — в каталоге SQLBackup.
Как получить доступ к дискам сервера
СПОСОБ 1. Подключение дисков к рабочей станции
Если файлы SQL Server хранятся на отдельном физическом диске, его можно подключить к рабочей станции через SATA-адаптер, USB-адаптер или док-станцию.
Если база данных хранилась на динамическом составном томе или в другой многодисковой конфигурации, желательно иметь доступ ко всем дискам, которые входили в ее состав.
Если подключить все диски одновременно невозможно, можно создать их образы, снятые посекторно. Для этого в Hetman RAID Recovery выберите физический диск, запустите Сохранить диск, укажите место сохранения и дождитесь завершения процесса копирования.

После этого диск можно отключить и таким же образом создать образ следующего диска. Смонтируйте готовые образы через Подключить диск и используйте их для анализа вместе с физическими дисками.

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

СПОСОБ 2. Настройка доступа по SSH
Есть еще один способ получить доступ к дискам без их физического извлечения. Если Windows Server 2022 все еще работает и доступен по сети, диски можно подключить к Hetman RAID Recovery удаленно по SSH.
Для этого заранее настройте OpenSSH Server на Windows Server.

Запустите службу OpenSSH SSH Server — sshd — и при необходимости установите ее автоматический запуск.


Также проверьте доступ через TCP-порт 22 и убедитесь, что учетная запись, используемая для подключения, имеет необходимые права для доступа к дискам сервера.
После настройки сервера откройте Hetman RAID Recovery. В верхнем меню перейдите в раздел Инструменты и выберите Подключиться по SSH.

В поле Удаленный сервер введите IP-адрес Windows Server, а в поле Порт укажите 22. Ниже, в разделе Учетные данные, выберите нужный Метод аутентификации и введите имя пользователя и пароль учетной записи. При необходимости можно включить параметры Сохранить сведения о сервере и Сохранить данные аутентификации, чтобы не вводить эти данные повторно. Затем нажмите Далее.

После успешного подключения к серверу в следующем окне будут отображены доступные физические диски и логические массивы. Выберите диски, которые относятся к требуемому JBOD, и продолжите.

После подтверждения они появятся в главном окне Hetman RAID Recovery, где с ними можно работать так же, как с локально подключенными дисками.
Обратите внимание на сетевое оборудование. Поскольку операции с дисками выполняются по сети, для стабильного и комфортного подключения желательно, чтобы рабочая станция, Windows Server и локальная сеть поддерживали скорость передачи данных 1 Гбит/с и выше. Это поможет ускорить анализ дисков и передачу восстановленных файлов.
Этот метод особенно удобен, если сервер все еще работает, а физическое извлечение и подключение большого количества дисков к другому компьютеру нежелательно или затруднительно.
Как восстановить удаленную базу данных SQL Server 2022
СПОСОБ 1. Восстановление базы данных из файла BAK
Перейдем к первому сценарию. В этом случае после восстановления доступен файл полной резервной копии TestDB_Full.bak, который можно использовать для восстановления базы данных.
Откройте Microsoft SQL Server Management Studio и подключитесь к нужному экземпляру SQL Server.

В дереве Обозревателя объектов откройте контекстное меню для Базы данных и выберите Восстановить базу данных.

В качестве источника выберите Устройство, укажите файл TestDB_Full.bak и убедитесь, что SQL Server правильно определил резервную копию.

Чтобы не изменять исходную базу данных TestDB, восстановите ее под отдельным именем — TestDB_Restored.

В параметрах восстановления укажите отдельные имена и пути для физических файлов базы данных, чтобы они не конфликтовали с файлами исходной базы TestDB. Для нового экземпляра используйте TestDB_Restored.mdf и TestDB_Restored_log.ldf.

Запустите Восстановление и дождитесь завершения операции. После успешного восстановления база данных TestDB_Restored появится в Обозревателе объектов.

Откройте ее и проверьте таблицы и записи. Также убедитесь, что данные, хранящиеся в поле VARBINARY(MAX), доступны. Таким образом мы проверяем не только создание базы данных, но и доступность ее содержимого после восстановления из файла BAK.

СПОСОБ 2. Восстановление удаленной базы данных
В следующем случае база данных TestDB_Restored была случайно удалена и больше не отображается в Microsoft SQL Server Management Studio. Ее физические файлы TestDB_Restored.mdf и TestDB_Restored_log.ldf также стали недоступны.
Сам динамический составной том остается доступным, поэтому повторно собирать JBOD не требуется.

Откройте Hetman RAID Recovery, выберите логический том NTFS, на котором находились файлы SQL Server, и запустите Быстрое сканирование.

После завершения анализа перейдите в каталоги, где хранились файлы MDF и LDF, и проверьте результаты. Найдите удаленные TestDB_Restored.mdf и TestDB_Restored_log.ldf, а также отметьте их имя, размер и расположение.


Если Быстрое сканирование не находит нужные файлы или результат неполный, вернитесь к выбору режима анализа и запустите Полное сканирование. Оно выполняет более глубокий анализ NTFS и может найти больше удаленных данных.
После того как необходимые файлы MDF и LDF будут найдены, добавьте их в список восстановления и сохраните на другой физический диск.

Не рекомендуется восстанавливать файлы обратно на исходный динамический составной том, поскольку новые записи могут перезаписать другие данные, которые еще можно восстановить.
После восстановления физических файлов вернитесь в Microsoft SQL Server Management Studio. В контекстном меню для Баз данных выберите Подключить.

Добавьте восстановленный TestDB_Restored.mdf и убедитесь, что SQL Server видит связанный файл журнала TestDB_Restored_log.ldf.

Если оба файла остаются читаемыми и согласованными, выполните Подключить. После подключения база данных снова появится в списке SQL Server.

Откройте таблицы и проверьте записи. Дополнительно проверьте доступность данных VARBINARY(MAX), использованных в тестовой базе данных. Если структура, записи и хранящиеся файлы доступны, восстановление можно считать успешным.

Заключение
Мы рассмотрели два основных сценария работы с файлами базы данных Microsoft SQL Server 2022:
- В первом случае для восстановления базы данных был использован доступный файл резервной копии BAK через Restore.
- Во втором случае после удаления базы данных были найдены и восстановлены ее физические файлы MDF и LDF с помощью Hetman RAID Recovery, после чего они были подключены обратно к SQL Server через Attach.
Hetman RAID Recovery позволяет работать с физическими дисками, образами, созданными посекторно, и удаленными дисками по SSH, а также поддерживает Windows, Linux и macOS. Это дает возможность организовать восстановление даже тогда, когда файлы SQL Server хранятся в многодисковых конфигурациях или когда серверные диски неудобно извлекать и подключать к другому компьютеру.




