Как отменить запрос SQL Server UPDATE?

В SQL Server Management Studio я выполнил запрос ниже.
К сожалению, я забыл раскомментировать предложение WHERE.
1647 строк были обновлены вместо 4.

Как я могу отменить последнее утверждение?

К сожалению, я только что закончил перевод этих 1647 строк и делал окончательные исправления и, следовательно, не имел резервной копии.

UPDATE [dbo].[T_Language]
   SET 
       [LANG_DE] = 'Mietvertrag' --<LANG_DE, varchar(255),>
      ,[LANG_FR] = 'Contrat de bail' -- <LANG_FR, varchar(255),>
      ,[LANG_IT] = 'Contratto di locazione' -- <LANG_IT, varchar(255),>      
      ,[LANG_EN] = 'Tenancy agreement' -- <LANG_EN, varchar(255),>
       --WHERE [LANG_DE] like 'Mietvertrag'

Существует протокол транзакций, по крайней мере, я надеюсь.

Ответы

Ответ 1

Неподвижная транзакция может быть отменена путем выдачи команды ROLLBACK

Но если вы работаете в режиме автоматической фиксации, вы ничего не можете сделать....

Ответ 2

Если у вас уже есть полная резервная копия из вашей базы данных, к счастью, у вас есть опция в SQL Management Studio. В этом случае вы можете использовать следующие шаги:

  • Щелкните правой кнопкой мыши по базе данных → Задачи → Восстановить → База данных.

  • На вкладке "Общие" нажмите "Временная шкала → выберите" Определенная дата и время ".

  • Переместите ползунок временной шкалы до времени команды обновления → нажмите "ОК".

  • В имени базы данных назначения введите новое имя.

  • На вкладке "Файлы" установите флажок "Перераспределить все файлы в папку" и затем выберите новый путь для сохранения восстановленной базы данных.

  • На вкладке "Параметры" установите флажок "Перезаписать..." и удалите флажок "Хвост-журнал...".

  • Наконец, нажмите OK и дождитесь завершения процесса восстановления.

Я сам использовал этот метод в операционной базе данных, и это было очень полезно.

Ответ 3

Учитывая, что у вас уже есть полный идентификатор резервного копирования, просто восстановите эту резервную копию в отдельной базе данных и перенесите данные из нее.

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

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

Возможно, вы захотите попробовать с функциями DBCC LOG, fn_log или с сторонним устройством чтения журналов, например ApexSQL Log

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

Ответ 4

Поскольку у вас есть ПОЛНАЯ резервная копия, вы можете восстановить резервную копию на другой сервер в качестве базы данных с тем же именем или с тем же сервером с другим именем.

Затем вы можете просто просмотреть предварительное обновление содержимого и написать SQL script для обновления.

Ответ 5

Если вы можете уловить это вовремя, и у вас нет возможности выполнить ROLLBACK или использовать журнал транзакций, вы можете немедленно сделать резервную копию и использовать инструмент, такой как Redgate SQL Data Compare, чтобы сгенерировать сценарий для "восстановления" затронутых данных. Это сработало как обаяние для меня. :)

Ответ 6

Если ваши данные важны, запустите полное восстановление с резервным копированием журнала каждые 15 минут и более. - КОНЕЦ ЛИНИИ