Відновлення даних sql server після випадкового видалення (delete) або зміни (update) -

Найгірший кошмар для DBA - це втрата даних по його власну помилку. Не рідкість, коли випадково виконується операція видалення (DELETE) або зміни (UPDATE) без вказівки фільтра WHERE, тоді відразу мільйони рядків можуть бути некоректно змінені.

Які ж варіанти відновлення можливі в SQL Server, якщо з вами трапилася подібна ситуація?

Ви можете відновити дані з резервної копії, яку ви зробили прямо перед тим, як дані були змінені.

Загальний сценарій відновлення:

  1. Відновіть БД з резервної копії поверх вихідної
  2. В іншому випадку
    • Відновіть БД з резервної копії під іншим ім'ям
    • Знайдіть всі рядки, які необхідно відновити
    • Напишіть сценарій, який відновить потрібні рядки в вихідної БД

На жаль, сценарій, описаний вище, це ідеальна картина. У реальному ж житті все може піти зовсім ні так:

  • Помилки виявляються ні відразу, а через якийсь час
  • У базі даних стався великий набір змін між створенням резервних копій і внесенням до бази помилкових даних
  • Наступні зміни, зроблені в БД, вже після вашої помилки
  • Резервні копії не робляться регулярно або відсутні зовсім

В якості альтернативного сценарію відновлення можна скористатися даними з журналу транзакцій і резервних копій журналу транзакцій.

ApexSQL Log - це той інструмент відновлення SQL Server, який здатний з даних журналу транзакцій повернути змінені записи в початковий стан.

Щоб відновити за допомогою ApexSQL Log випадково видалені або змінені дані виконайте наступні кроки:

  1. Запустіть ApexSQL Log
  2. Підключіться до БД
  3. У вікні Select SQL logs to analyze вкажіть журнал транзакцій і резервні копії журналів транзакцій, які ви хочете прочитати. Зверніть увагу, що вони повинні утворювати повну ланцюжок подій, щоб забезпечити відновлення всіх даних. Додавання повної резервної копії БД може допомогти в пошуку потрібних даних і здатне прискорити цей пошук.

Відновлення даних sql server після випадкового видалення (delete) або зміни (update) -

  • У вікні Filter setup ви можете вказати додаткові параметри, щоб звузити пошук: час, тип операції, назва таблиці, ім'я користувача та інші.

    Відновлення даних sql server після випадкового видалення (delete) або зміни (update) -

  • Після того, як ви встановили всі опції, натисніть кнопку відкрити (Open)
  • Усі транзакції будуть представлені у вигляді таблиці, ви як і раніше можете вказати додаткові умови, щоб відсіяти непотрібні записи за допомогою фільтрів (Filter) в лівій панелі.

    Відновлення даних sql server після випадкового видалення (delete) або зміни (update) -

    Для виконання відновлення даних, виберіть транзакції, які ви хочете повернутися і натисніть кнопку Create undo script на вкладці Actions.

    Відновлення даних sql server після випадкового видалення (delete) або зміни (update) -

    Тепер досить виконати цей сценарій у вашій БД і все випадково змінені або видалені дані будуть повернуті.

    Так що пам'ятайте, якщо ви випадково видалили або змінили дані, ви все ще можете відновити їх за допомогою ApexSQL Log