Ответ 1
Неподвижная транзакция может быть отменена путем выдачи команды ROLLBACK
Но если вы работаете в режиме автоматической фиксации, вы ничего не можете сделать....
В 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'
Существует протокол транзакций, по крайней мере, я надеюсь.
Неподвижная транзакция может быть отменена путем выдачи команды ROLLBACK
Но если вы работаете в режиме автоматической фиксации, вы ничего не можете сделать....
Если у вас уже есть полная резервная копия из вашей базы данных, к счастью, у вас есть опция в SQL Management Studio. В этом случае вы можете использовать следующие шаги:
Щелкните правой кнопкой мыши по базе данных → Задачи → Восстановить → База данных.
На вкладке "Общие" нажмите "Временная шкала → выберите" Определенная дата и время ".
Переместите ползунок временной шкалы до времени команды обновления → нажмите "ОК".
В имени базы данных назначения введите новое имя.
На вкладке "Файлы" установите флажок "Перераспределить все файлы в папку" и затем выберите новый путь для сохранения восстановленной базы данных.
На вкладке "Параметры" установите флажок "Перезаписать..." и удалите флажок "Хвост-журнал...".
Наконец, нажмите OK и дождитесь завершения процесса восстановления.
Я сам использовал этот метод в операционной базе данных, и это было очень полезно.
Учитывая, что у вас уже есть полный идентификатор резервного копирования, просто восстановите эту резервную копию в отдельной базе данных и перенесите данные из нее.
Если ваши данные были изменены после последней резервной копии, тогда вы восстанавливаете все данные таким образом, но можете попытаться восстановить их, прочитав журнал транзакций.
Если ваша база данных находилась в режиме полного восстановления, чем в журнале транзакций, достаточно данных для восстановления обновлений ваших данных после последней резервной копии.
Возможно, вы захотите попробовать с функциями DBCC LOG, fn_log или с сторонним устройством чтения журналов, например ApexSQL Log
К сожалению, нет простого способа читать журнал транзакций, потому что MS не предоставляет документацию для этого и сохраняет данные в своем фирменном формате.
Поскольку у вас есть ПОЛНАЯ резервная копия, вы можете восстановить резервную копию на другой сервер в качестве базы данных с тем же именем или с тем же сервером с другим именем.
Затем вы можете просто просмотреть предварительное обновление содержимого и написать SQL script для обновления.
Если вы можете уловить это вовремя, и у вас нет возможности выполнить ROLLBACK
или использовать журнал транзакций, вы можете немедленно сделать резервную копию и использовать инструмент, такой как Redgate SQL Data Compare, чтобы сгенерировать сценарий для "восстановления" затронутых данных. Это сработало как обаяние для меня. :)
Если ваши данные важны, запустите полное восстановление с резервным копированием журнала каждые 15 минут и более. - КОНЕЦ ЛИНИИ