Нужна помощь в транзакции отката SQL - PullRequest
0 голосов
/ 13 июня 2009

Я обновил свою базу данных по этому запросу:

 UPDATE suppliers SET contactname = 'Dirk Lucky'

Таким образом, все строки в таблице поставщиков имеют контактное имя: "Dirk Lucky."

Как мне откатить эту транзакцию? Я хочу восстановить столбец с именем контакта в таблице поставщиков.

Спасибо, Программист

Ответы [ 3 ]

4 голосов
/ 13 июня 2009

Если у вас есть полный журнал в режиме FULL, вы можете выполнить восстановление из журнала. Об этом есть отличная запись в блоге здесь .

Если нет, я серьезно надеюсь, что у вас есть резервная копия.

Для дальнейшего использования: Когда я делаю обновления, я использую следующий синтаксис:

SELECT *
--UPDATE a SET col = 'val'
FROM myTable a
WHERE id = 1234

Таким образом, вы можете видеть, что вы выбираете для обновления в первую очередь. Затем, когда вы, наконец, готовы к обновлению, вы просто выбираете UPDATE и запускаете запрос. Я поймал себя много раз с этим трюком. Он также работает с удалениями, так что это бонус.

4 голосов
/ 13 июня 2009

Похоже, ваша транзакция уже совершена. Ты больше не сможешь откатить назад.

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

0 голосов
/ 15 июня 2009

Надеюсь, ваша база данных использует модель полного восстановления. Если так:

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

Затем можно выполнить восстановление базы данных из вашей полной резервной копии + различия.

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

См. «Как восстановить на определенный момент времени»

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

Надеюсь, это имеет смысл, но дайте мне знать, если вам нужна помощь.

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