Як відновити файли баз даних Microsoft SQL Server 2022 (MDF, LDF та BAK)
У цій статті розглянемо, як відновити файли баз даних Microsoft SQL Server 2022. Покажемо, що робити у випадку випадкового видалення бази даних або її файлів, а також як використати доступну резервну копію для повернення бази до робочого стану.

- Особливості SQL Server
- Як отримати доступ до дисків сервера
- Як відновити видалену базу даних SQL Server 2022
- Висновок
- Поширені запитання
- Коментарі
Для відновлення файлів будемо використовувати Hetman RAID Recovery. Програма дозволяє знаходити MDF, LDF і BAK на фізичних накопичувачах, RAID і Dynamic Disk, а також працювати з посекторними образами дисків. Відновлені файли надалі можна використовувати для 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 розміщена на Dynamic Spanned Volume з файловою системою NTFS. Вона містить таблиці, тестові записи клієнтів та файли, збережені в полі VARBINARY(MAX). Файл MDF зберігається в каталозі SQLData, журнал LDF – у SQLLogs, а повна резервна копія TestDB_Full.bak – у каталозі SQLBackup.
Як отримати доступ до дисків сервера
СПОСІБ 1. Підключення накопичувачів до робочого комп'ютера
Якщо файли SQL Server знаходяться на окремому фізичному диску, то його можна підключити до робочого комп'ютера через SATA, USB-адаптер або док-станцію.
Якщо база зберігалася на Dynamic Spanned Volume або іншій багатодисковій конфігурації, бажано мати доступ до всіх накопичувачів, які входили до її складу.
Якщо одночасно підключити всі диски неможливо, то можна створити їхні посекторні образи. Для цього в Hetman RAID Recovery вибираємо фізичний накопичувач, запускаємо Save disk, вказуємо місце для збереження та чекаємо завершення копіювання.

Після цього диск можна відключити та таким самим способом створити образ наступного накопичувача. Готові образи підключаємо через Mount disk і використовуємо для аналізу разом із фізичними дисками.

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

СПОСІБ 2. Налаштування доступу по SSH
Є іще один спосіб отримати доступ до накопичувачів без їх фізичного демонтажу. Якщо Windows Server 2022 продовжує працювати та залишається доступним через мережу, то диски можна підключити до Hetman RAID Recovery віддалено через SSH.
Для цього на Windows Server попередньо налаштовуємо OpenSSH Server.

Запускаємо службу OpenSSH SSH Server – sshd та, за необхідності, встановлюємо для неї автоматичний запуск.


Також перевіряємо доступ через TCP-порт 22 і переконуємося, що обліковий запис, який буде використовуватися для підключення, має необхідні права доступу до накопичувачів сервера.
Після налаштування сервера відкрийте Hetman RAID Recovery. У верхньому меню перейдіть до Tools та оберіть Connect via SSH.

У полі Remote server введіть IP-адресу Windows Server, а в полі Port вкажіть 22. Нижче, у блоці Credentials, виберіть потрібний Authentication method та введіть логін і пароль облікового запису. За необхідності можна активувати Save server details та Save authentication data, щоб не вводити ці параметри повторно. Після цього натисніть Next.

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

Після підтвердження вони з'являться в головному вікні Hetman RAID Recovery, де з ними можна працювати так само, як із локально підключеними накопичувачами.
Варто звернути увагу на мережеве обладнання. Оскільки робота з накопичувачами відбувається через мережу, для стабільного та комфортного з'єднання бажано, щоб робочий комп'ютер, Windows Server та локальна мережа підтримували швидкість передачі даних від 1 Гбіт/с і вище. Це допоможе прискорити аналіз накопичувачів і передачу відновлених файлів.
Такий спосіб особливо зручний, якщо сервер продовжує працювати, а фізичний демонтаж і підключення великої кількості накопичувачів до іншого комп'ютера небажаний або складний.
Як відновити видалену базу даних SQL Server 2022
СПОСІБ 1. Відновлення бази даних із BAK-файлу
Переходимо до першого сценарію. У цьому випадку файл повної резервної копії TestDB_Full.bak доступний після відновлення і може бути використаний для відновлення бази даних.
Відкриваємо Microsoft SQL Server Management Studio та підключаємося до потрібного екземпляра SQL Server.

У дереві Object Explorer відкриваємо контекстне меню Databases та обираємо Restore Database.

Як джерело вибираємо Device, вказуємо файл TestDB_Full.bak і перевіряємо, що SQL Server правильно визначив резервну копію.

Щоб не змінювати початкову базу TestDB, відновлюємо її під окремою назвою TestDB_Restored.

У параметрах відновлення задаємо окремі імена та шляхи для фізичних файлів бази, щоб вони не конфліктували з файлами вихідної TestDB. Для нового екземпляра використовуємо TestDB_Restored.mdf та TestDB_Restored_log.ldf.

Запускаємо Restore та чекаємо завершення операції. Після успішного відновлення в Object Explorer з'являється база TestDB_Restored.

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

СПОСІБ 2. Відновлення видаленої бази даних
У наступному випадку база TestDB_Restored була випадково видалена та більше не відображається у Microsoft SQL Server Management Studio. Її фізичні файли TestDB_Restored.mdf та TestDB_Restored_log.ldf також стали недоступними.
Сам Dynamic Spanned Volume при цьому залишається доступним, тому повторно реконструювати JBOD не потрібно.

Відкриваємо Hetman RAID Recovery, обираємо логічний том NTFS, на якому знаходилися файли SQL Server, та запускаємо Fast scan.

Після завершення аналізу переходимо до каталогів, у яких зберігалися MDF і LDF, та перевіряємо результати. Знаходимо видалені TestDB_Restored.mdf і TestDB_Restored_log.ldf, звертаємо увагу на їхні назви, розмір і розташування.


Якщо Fast scan не знаходить необхідних файлів або результат виявився неповним, повертаємося до вибору режиму аналізу та запускаємо Full scan. Він виконує глибший аналіз NTFS і може знайти більше видалених даних.
Після того як потрібні MDF і LDF знайдено, додаємо їх до списку відновлення та зберігаємо на інший фізичний накопичувач.

Не рекомендується відновлювати файли назад на вихідний Dynamic Spanned Volume, оскільки новий запис може перезаписати інші дані, які ще можна було б відновити.
Після відновлення фізичних файлів повертаємося до Microsoft SQL Server Management Studio. У контекстному меню Databases обираємо Attach.

Додаємо відновлений TestDB_Restored.mdf та перевіряємо, що SQL Server бачить пов'язаний файл журналу TestDB_Restored_log.ldf.

Якщо обидва файли залишилися читабельними та узгодженими, виконуємо Attach. Після підключення база знову з'являється у списку 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 знаходяться на багатодискових конфігураціях або серверні накопичувачі незручно демонтувати та підключати до іншого комп'ютера.



