до тех пор, пока вы добавляете столбцы / таблицы в свою базу данных, задача будет легко записать эти изменения заранее в sql-файлы. Вы просто выполняете их. может быть, у вас есть приказ выполнить их.
хорошим решением было бы сделать один файл на таблицу, чтобы все изменения, принадлежащие этой таблице, были видны всем, кто когда-либо работал над таблицей (это похоже на работу с классом). То же самое относится и к хранимым процедурам или представлениям.
более сложная задача (и, следовательно, может быть, инструменты будут хорошими) - сделать шаг назад если вы только что добавили таблицы / столбцы, возможно, это не будет большой проблемой. но если вы удалили столбцы в обновлении, и теперь вам нужно отменить обновление, данных больше нет. вам нужно будет получить эти данные из резервной копии. но имейте в виду, что если у вас более нескольких таблиц, это может быть большой задачей, и в обычном случае вы должны отменить обновление очень быстро!
Если бы вы могли просто восстановить резервную копию, то в этот момент все в порядке. но если вы обновите в понедельник, ваши клиенты будут работать до среды, а затем они увидят, что некоторые данные отсутствуют (которые вы только что удалили из таблицы), тогда вы не сможете просто восстановить старую базу данных.
у меня в голове есть основанный на модели подход (извините, на данный момент не реализованный), в котором изменения схемы «моделируются» (например, для каждого XML), а во время обновления процессор (например, программа ac #) создает все необходимо "sql" и, например, перемещает данные в «dropDatabase». данные могут храниться там, и если по какой-то причине мне нужно восстановить некоторые отброшенные данные, я могу просто сделать это с процессором. я думаю, что через некоторое время (годы) этот подход не так плох, потому что в противном случае разработчики не трогают «старые» таблицы, потому что они больше не знают, действительно ли необходима таблица или столбец. при таком подходе вы не рискуете слишком большим, если что-то уроните!