Как откатить команду обновления SQL? - PullRequest
4 голосов
/ 26 апреля 2011

В SQL server 2008 R2. Можно ли сделать откат по одной команде обновления?

Я знаю, что на SO есть и другие подобные вопросы, но я не видел ни одного конкретного для 2008 R2, и, следовательно, я могу получить тот же ответ, если это так, тогда мы можем закрыть эту ветку.

Я сделал простое обновление без команд транзакций:

UPDATE myTable SET col1=somevalue WHERE....

Ответы [ 2 ]

6 голосов
/ 26 апреля 2011

Конечно, вы можете использовать явные транзакции, такие как

BEGIN TRAN
UPDATE ...
ROLLBACK

, но я не думаю, что вы спрашиваете об этом?

Если у вас есть опция SET IMPLICIT_TRANSACTIONS ON, то командане будет зафиксирован или отменен, пока вы не сделаете это явно, но это не поведение по умолчанию.

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

1 голос
/ 03 апреля 2013

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

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

Решение состоит в том, чтобы использовать такие команды, как DBCC LOG или fn_log или сторонние разработчики.такой инструмент, как ApexSQL Log , который делает все это автоматически, но поставляется с ценой.

Если вам нужна дополнительная информация, вот пара постов по чтению журнала транзакций:

Чтение файла журнала (* .LDF) в SQL Server 2008

Проводник / анализатор журнала транзакций SQL Server

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...