Вы когда-нибудь случайно удаляли важные записи из базы данных SQL Server? Это может быть неприятным опытом, но к счастью, есть способы восстановить эти удаленные записи. В этой статье мы рассмотрим концепцию восстановления SQL-журнала и как он может помочь вам восстановить удаленные данные в SQL Server.
Роль транзакционных журналов
Транзакционные журналы отвечают за все операции журналирования базы данных в SQL Server. Они отслеживают каждое изменение, сделанное в базе данных, включая удаления. Используя неопубликованную функцию “fn_dblog” и концепцию номеров последовательности журнала (LSN), мы можем идентифицировать и восстановить удаленные записи.
Идентификация удаленных записей
Перед попыткой восстановить удаленные записи, важно знать, когда и кем были удалены данные. Найдя конкретный LSN, под которым произошло удаление, мы можем откатить удаленные записи в SQL Server до этого LSN.
Восстановление удаленных записей с помощью LSN
Вот шаги для восстановления удаленных записей в SQL Server с использованием восстановления SQL-журнала:
- Создайте базу данных и таблицу, на которой будет выполняться оператор DELETE.
- Вставьте несколько строк в таблицу.
- Удалите несколько строк из таблицы.
- Найдите транзакционный журнал SQL Server и получите информацию о удаленных транзакциях с помощью функции “fn_dblog”.
- Определите LSN операции LOP_BEGIN_XACT, когда оператор DELETE начал свою транзакцию.
- Преобразуйте шестнадцатеричное значение LSN в десятичный формат.
- Выполните резервное копирование журнала транзакций, если оно не было выполнено после удаления данных.
- Восстановите базу данных в другое место или на том же сервере с другим именем до определенного LSN.
- Импортируйте и восстановите удаленные данные из восстановленной базы данных в рабочую базу данных.
- Проверьте восстановленные данные.
Когда восстановление SQL-журнала становится сложным
Хотя вышеуказанные шаги могут быть полезны в большинстве случаев, есть ситуации, когда восстановление удаленных данных с помощью восстановления SQL-журнала становится сложным. Эти ситуации включают:
- Изменения, сделанные после операторов DELETE, TRUNCATE или DROP.
- Невозможность выключить SQL Server.
- Новые транзакции, выполненные после потери данных.
- Отсутствие недавнего полного резервного копирования базы данных.
В таких ситуациях пользователи могут рассмотреть возможность использования сторонних инструментов для восстановления SQL-журнала, чтобы успешно восстановить удаленные записи данных в SQL Server.
Заключение
Случайное удаление записей из базы данных SQL Server может быть стрессовым опытом. Однако, с помощью восстановления SQL-журнала, вы можете восстановить эти удаленные записи и восстановить их в вашу базу данных. Независимо от того, используете ли вы SQL Server 2016, 2014, 2012 или более старые версии, процесс остается тем же. Помните всегда тестировать любые изменения в среде с низким жизненным циклом перед их внедрением в производство.