How to undo a SQL Server UPDATE query?
In SQL Server Management Studio, I did the query below.
Unfortunately, I forgot to uncomment the WHERE clause.
1647 rows were updated instead of 4.
How can I undo the last statement?
Unfortunately, I’ve only just finished translating those 1647 rows and was doing final corrections , and thus don’t have a backup .
There is a transaction protocol, at least I hope so.
![]()
![]()
6 Answers 6
A non-committed transaction can be reverted by issuing the command ROLLBACK
But if you are running in auto-commit mode there is nothing you can do.
![]()
If you already have a full backup from your database, fortunately, you have an option in SQL Management Studio. In this case, you can use the following steps:
Right click on database -> Tasks -> Restore -> Database.
In General tab, click on Timeline -> select Specific date and time option.
Move the timeline slider to before update command time -> click OK.
In the destination database name, type a new name.
In the Files tab, check in Reallocate all files to folder and then select a new path to save your recovered database.
In the options tab, check in Overwrite . and remove Take tail-log. check option.
Finally, click on OK and wait until the recovery process is over.
I have used this method myself in an operational database and it was very useful.
![]()
![]()
Considering that you already have a full backup I’d just restore that backup into separate database and migrate the data from there.
If your data has changed after the latest backup then what you recover all data that way but you can try to recover that by reading transaction log.
If your database was in full recovery mode than transaction log has enough details to recover updates to your data after the latest backup.
You might want to try with DBCC LOG, fn_log functions or with third party log reader such as ApexSQL Log
Unfortunately there is no easy way to read transaction log because MS doesn’t provide documentation for this and stores the data in its proprietary format.
Как отменить выполненный запрос update?

Чаще всего, боржоми уже поздно пить.
Ну можно выяснить, какой режим восстановления установлен
SELECT name,recovery_model_desc FROM sys.databases
и поздравить себя с переходом во вторую категорию из трёх:
1. Люди, которые ещё не делают бэкапы
2. Люди, которые уже делают бэкапы
3. Люди, которые уже проверяют сделанные бэкапы.
А вообще на рабочей базе любой апдейт должен начинаться с BEGIN TRANSACTION
Как отменить запрос обновления SQL Server?
в SQL Server Management Studio я сделал запрос ниже.
К сожалению, я забыл раскомментировать WHERE предложения.
Вместо 4 было обновлено 1647 строк.
Как я могу отменить последнее заявление?
к сожалению, я только что закончил перевод этих 1647 строк и делал окончательные исправления , и, таким образом, не имеют резервного копирования .
существует протокол транзакций, по крайней мере, я надеюсь на это.
4 ответов
незафиксированную транзакцию можно отменить, выполнив команду ROLLBACK
но если вы работаете в режиме автоматической фиксации, вы ничего не можете сделать.
Если у вас уже есть полная резервная копия из вашей базы данных, к счастью, у вас есть опция в SQL Management Studio. В этом случае вы можете использовать следующие шаги:
щелкните правой кнопкой мыши на базе данных — > задачи — > восстановить — > база данных.
на вкладке Общие нажмите на временную шкалу — > выберите конкретную дату и время.
переместите ползунок временной шкалы до времени команды обновления — > нажмите ЛАДНО.
В имя целевой базы данных, введите новое имя.
на вкладке файлы установите флажок перераспределить все файлы в папку и выберите новый путь для сохранения восстановленной базы данных.
на вкладке Параметры установите флажок перезаписать . и уберите хвостовое бревно. проверьте опцию.
наконец, нажмите OK и дождитесь завершения процесса восстановления.
Я использовал этот метод сам по себе в оперативной базе данных и был очень полезен.
учитывая, что у вас уже есть полная резервная копия, я бы просто восстановил эту резервную копию в отдельную базу данных и перенес данные оттуда.
Если ваши данные изменились после последней резервной копии, то что вы восстанавливаете все данные таким образом, но вы можете попытаться восстановить это, прочитав журнал транзакций.
Если ваша база данных была в режиме полного восстановления, чем журнал транзакций имеет достаточно деталей для восстановления обновлений данных после последней резервной копии.
возможно, вы захотите чтобы попробовать с DBCC LOG, функциями fn_log или с сторонним устройством чтения журналов, таким как Журнал ApexSQL
к сожалению, нет простого способа прочитать журнал транзакций, потому что MS не предоставляет документацию для этого и хранит данные в своем собственном формате.
поскольку у вас есть полная резервная копия, вы можете восстановить резервную копию на другой сервер в качестве базы данных с тем же именем или на тот же сервер с другим именем.
затем вы можете просто просмотреть содержимое перед обновлением и написать сценарий SQL для обновления.