Есть моменты, когда вы должны исправить данные на Prod, которые не существуют на других серверах. Это не только из-за ошибок, но и из-за импорта данных из файла, который клиент отправил неверно, или из-за проблемы, вызванной взломом вашей системы. Или из-за проблемы, вызванной неправильным вводом данных. Если ваша база данных велика или критична по времени, у вас может не быть времени, чтобы восстановить последнюю резервную копию и исправить ее на dev.
Ваша первая защита (и то, чего не может обойтись ни одна база данных Enterprise!) - это таблицы аудита. Вы можете использовать их для отмены неверных изменений данных. Кроме того, вы можете написать сценарии для возврата данных в предыдущее состояние и проверить их на других серверах задолго до того, как вам потребуется вернуть проверенные данные. Тогда единственный риск состоит в том, что вы определили правильные записи для восстановления.
Далее все сценарии для изменения данных о производстве должны включать следующее:
Они должны быть в явных транзакциях и иметь блок TRY Catch.
У них должен быть тестовый режим, который вы можете использовать для отката изменений после того, как увидите, какими они были. У вас должна быть выбранная оценка до внесения изменения и один прогон после изменения, чтобы убедиться, что изменение было правильным. Сценарий должен убедиться, что показано количество обработанных строк. У нас есть некоторые из этих предустановок в шаблоне, который гарантирует, что все будет сделано. Шаблоны для изменений, помогите сэкономить время при написании исправления тоже.
Если требуется изменить или обновить большой объем данных, подумайте о написании сценария, который будет запускаться партиями с фиксацией для каждого пакета. Вы не хотите блокировать всю систему, пока вы исправляете миллион записей. Если у вас есть большие объемы данных для исправления, убедитесь, что dba или кто-то, кто привык к настройке производительности, проверяет сценарий перед запуском и запускает в нерабочее время, если это вообще возможно.
Затем все сценарии, которые могут изменить что-либо на производстве, проверяются на код и вводятся в систему контроля версий. Все они - без исключения.
Наконец, разработчики не должны запускать эти скрипты. Они должны быть запущены dbas или группой управления конфигурацией. Если у вас нет ни одного из них, то только люди, которые являются техническими лидерами или выше, должны иметь права управлять вещами на Prod. Чем меньше людей работают над продуктом, тем легче отследить проблему. Сценарии должны быть написаны так, чтобы они просто выполнялись, без выделения частей и запуска по одному шагу за раз. Это тот материал, который выделяет, который часто доставляет людям неприятности, когда они забывают выделить предложение where.