Ошибочно запустил оператор обновления таблицы

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

4 ответа

Мне жаль говорить, что вы только что преподали себе урок.

Есть ли способ восстановить данные из других источников, может быть, исторические файлы журнала? Часто мы ведем журналы, которые регистрируют, когда что-то изменилось и кем; такая вещь поможет вам найти последнюю ценность чего-либо.

Для дальнейшего использования, когда я пишу инструкцию UPDATE, я всегда сначала набираю

UPDATE mytable SET qq=ww WHERE {where clause}

То есть я буквально набираю "qq=ww", что обязательно является недопустимым, и набираю фактическое предложение WHERE перед тем, как вводить все, что может быть фактически выполнено. Я думаю, что обратный порядок предложений - ошибка проектирования на языке SQL.

Если у вас все еще есть текущий файл журнала, может быть возможно восстановить данные с помощью стороннего инструмента. Операторы UPDATE полностью регистрируются в большинстве случаев. Вот несколько инструментов для поиска:

Apex SQL Log от ApexSQL

Восстановление журнала SQL от RedGate

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

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

Это заставляет вас остановиться и подумать, если не что иное. Я видел, как люди делают это в транзакции, а затем немедленно фиксируют это, не проверяя, правильно ли это, а не просто успешно.

Кроме того, еще одна причина, чтобы сделать такие вещи в транзакции.

Другие вопросы по тегам