Какой ваш # 1 способ быть осторожным с живой базой данных? - PullRequest
80 голосов
/ 03 октября 2008

Для моего клиента я иногда работаю в его действующей базе данных, чтобы исправить проблему, которую он создал для себя, или чтобы исправить неверные данные, которые создали ошибки моего продукта. Как и в случае с root-доступом в Unix, это просто опасно. Какие уроки я должен выучить раньше времени?

Что вы # 1 делаете, чтобы быть осторожным при работе с живыми данными?

Ответы [ 52 ]

0 голосов
/ 04 октября 2008

Go купить Apex SQL Log . Если вы понимаете, что действительно облажались, или даже если это был кто-то другой, вы можете использовать журнал, чтобы отменить изменения.

0 голосов
/ 04 октября 2008

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

2 - При написании оператора обновления ВСЕГДА сначала пишите предложение WHERE, затем верните курсор в начало строки и запишите часть обновления поля.

3 - оператор where для # 2 должен быть проверен с помощью оператора select.

0 голосов
/ 30 октября 2008

если вы используете оракул 10 / 11g ... Flashback

http://www.oracle.com/technology/deploy/availability/htdocs/Flashback_Overview.htm

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

0 голосов
/ 04 октября 2008

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

Если вы не можете дождаться применения сразу после снимка, сделайте резервную копию, убедитесь, что eveyrone понимает, сколько работы может потребоваться для переноса изменений между последним снимком и временем, когда вы применили «исправление», если это не так разрабатывать.

0 голосов
/ 02 апреля 2009

Если вы используете SQL Server 2005+ Management Studio, вы можете включить неявные транзакции.

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

Всякий раз, когда я открываю соединение с PROD или переключаюсь в контекст данных PROD, первое, что я всегда делаю, это добавляю этот комментарий до и после моего активного блока рабочего кода:

-- PROD -- PROD -- PROD -- PROD -- PROD -- PROD --

Были случаи, когда я замечал это, когда мой большой палец был на клавише Alt, а мой средний палец был на полпути к клавише «X». Уф!

0 голосов
/ 03 октября 2008

Еще одно быстрое дополнение, которое я не видел, но часто делаю: резервное копирование таблицы, которую вы обновляете. Я делаю это, имея базу данных для хранения этих резервных копий. Тогда я могу написать:

select *
  into MyBackupDb..PeterTableName2008_09_28BeforeABigUpdate

Это значительно ускоряет восстановление после ошибок (когда полное восстановление нецелесообразно).

0 голосов
/ 03 октября 2008

Убедитесь, что в вашем запросе указан WHERE параметр

Однажды я был на полпути к сложному обновлению, отвлекся и досрочно завершил запрос, забыв предложение "где". Затем я почувствовал, что умираю, наблюдая, как полсекунды гремят на 3 секунды. Несколько часов, проведенных после очистки данных клиентов, были уроком

В результате теперь, когда я работаю с живыми БД, я структурирую свои запросы следующим образом:

UPDATE my_table WHERE condition = true;

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

0 голосов
/ 24 июля 2009

Если вы используете Microsoft SQL Server Management Studio 2008 , вы можете указать, какой цвет будет использоваться в информационном окне при выполнении запросов (в нижней части редактора запросов SQL)

В окне подключения выберите «Параметры»> «Использовать пользовательский цвет» и выберите «КРАСНЫЙ» для производства.

0 голосов
/ 03 октября 2008

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

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