Как восстановить удаленную таблицу на сервере sql после полного резервного копирования
Мне нужно восстановить удаленную таблицу из базы данных SQL Server, которая работает в SQL Server 2016 Standard Edition. База данных находится в режиме полного восстановления.
После удаления таблицы я сделал полную резервную копию базы данных, а затем дважды сделал резервную копию журнала транзакций. Теперь я могу восстановить свою удаленную таблицу с использованием дорогих сторонних инструментов или без них?
Я попробовал эту ссылку и получил ошибку в последней команде.
Результат запроса STOPBEFOREMARK:
Обработано 2104752 страницы для базы данных 'databasecopy', файл 'databasefilename' в файле 1. Обработано 6 страниц для базы данных 'datebasecopy', файл 'database_log' в файле 1. RESTORE DATABASE успешно обработал 2104758 страниц за 123,259 секунд (133,405 МБ / с). Сообщение 4335, уровень 16, состояние 2, строка 15 Указанное время STOPAT слишком раннее. Вся или часть базы данных уже перенесена за пределы этой точки. Сообщение 3013, уровень 16, состояние 1, строка 15 RESTORE LOG завершается ненормально. RESTORE DATABASE успешно обработал 0 страниц за 0,544 секунды (0,000 МБ / с).
Когда я нажимаю опцию Восстановить исходную базу данных и нажимаю опцию Временной шкалы, я получаю экран ниже
Таблица пропущена по времени из fun_dblog:
1 ответ
Хорошо, чтобы избежать долгих разговоров по этому поводу, вот что я предлагаю:
Восстановите полную резервную копию, которую вы взяли 4 месяца назад, а НЕ ту, которую вы взяли сегодня:
ВОССТАНОВИТЬ БАЗУ ДАННЫХ [databasecopy] ИЗ DISK = N'OLD_BACKUP.bak'С MOVE N'database' TO N'C:\SQLskills\database2.mdf', MOVE N'database_log' TO N'C:\SQLskills\database2_log.ldf', ЗАМЕНА, NORECOVERY; ИДТИ
Затем запустите RESTORE до этого LSN:
ВОССТАНОВИТЬ ЛОГ [databasecopy] ИЗ ДИСКА = N'D:\SQLskills\database_Log2.bak' WITH STOPBEFOREMARK = 'lsn:3420000002597000001', NORECOVERY; GO RESTORE DATABASE [databasecopy] С ВОССТАНОВЛЕНИЕМ; ИДТИ
Это не будет работать, если вы используете текущую полную резервную копию, потому что все в журнале на тот момент уже было зафиксировано, и вы пытаетесь вернуться назад во времени. Восстановление только идет вперед во времени. Это причина вашей ошибки.