Восстановить удаленную запись в SQL Server

Я случайно удалил строку в таблице и хочу ее восстановить. Я нашел решение здесь: Как восстановить удаленные записи на сервере MS SQL

Я попытался восстановить базу данных из резервной копии, сделанной после удаления. Но я не могу восстановить базу данных с опцией STOPAT:

RESTORE LOG database FROM  DISK = N'X:\database.BAK' WITH
STOPAT = N'2011-02-12T00:00:00', RECOVERY

У меня есть следующая ошибка:

Msg 3117, Level 16, State 4, Line 1
The log or differential backup cannot be restored because no files are
ready to rollforward.
Msg 3013, Level 16, State 1, Line 1
RESTORE LOG is terminating abnormally.

person HasanG    schedule 14.02.2011    source источник
comment
Привет, вы выполнили все инструкции по этой ссылке? Сначала делаете резервную копию хвостового журнала? Есть ли у вас какие-либо другие резервные копии, сделанные перед удалением строки? Какова модель восстановления этой базы данных?   -  person rsc    schedule 14.02.2011
comment
База данных размещена на виртуальном хостинге. У меня нет прямого доступа к резервным копиям. У меня есть предыдущая резервная копия, но она не содержит потерянных данных. Я предполагаю, что режим резервного копирования заполнен.   -  person HasanG    schedule 14.02.2011


Ответы (4)


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

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

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

Вы можете добавить дифференциальную резервную копию, чтобы уменьшить длину цепочки резервных копий журнала, но это необязательно.

Только если все вышеуказанные условия соблюдены, вы можете продолжить процедуру. Если вы пропустите любое из вышеперечисленного, эта запись будет потеряна. Как правило, не следуйте статьям в блогах или ответам на форумах, включая этот, вместо этого следуйте документации по продукту: Как выполнить восстановление на определенный момент времени (Transact-SQL)

person Remus Rusanu    schedule 14.02.2011
comment
Так что лучше и проще попросить моего клиента повторно ввести те же данные :) - person HasanG; 14.02.2011

Если ваша база данных находилась в режиме полного восстановления, вы можете попытаться прочитать журнал транзакций и восстановить данные оттуда с помощью коммерческого инструмента, такого как Журнал ApexSQL или команды сервера sql, такие как DBCC LOG или fn_log.

Также вы можете попробовать просмотреть эти сообщения для получения более подробной информации:

Как отменить операцию удаления в SQL Server 2005?< /а>

Как просматривать журналы транзакций в SQL Server 2008

person David Smithers    schedule 15.04.2013

Взято из этой ссылки -

Дифференциальная резервная копия, хотя и содержит только измененные страницы данных с момента последней полной резервной копии базы данных, может быть восстановлена ​​только в сочетании с полной резервной копией, аналогичной использованию резервных копий журналов. У вас нет возможности восстанавливать только отдельные таблицы или объекты, но вы можете восстанавливать на уровне базы данных, файловой группы, файла и страницы. Вы также можете восстановить данные до определенного момента времени из любой из резервных копий (при условии, что вы восстановили необходимые предыдущие полные, дифференциальные, журналы).

Возможно, лучшим решением для вас в этом случае будет восстановление базы данных с использованием другого имени базы данных, а затем перемещение только тех данных, которые вы хотите, в существующую базу данных? Не уверен, что это именно то, чего вы пытаетесь достичь.

person Sachin Shanbhag    schedule 14.02.2011
comment
Я пытаюсь восстановить строку таблицы. Резервная копия была создана после удаления. - person HasanG; 14.02.2011

Да, восстановить удаленные записи из базы данных SQL Server можно различными методами, что, с другой стороны, требует различных предварительных условий. Некоторые из них включают встроенные функции SQL Server, другие сторонние инструменты.

В любом случае, в некоторых случаях удаленные данные не теряются, даже если ваша база данных не использует модель полного восстановления. Для получения дополнительной информации см. Восстановление удаленных данных SQL из резервной копии или из файлов онлайн-базы данных онлайн-статья.

Отказ от ответственности: я работаю инженером по поддержке продуктов в ApexSQL

person Ivan Stankovic    schedule 07.05.2014