Сравнение структур базы данных:как создать SQL-патч?
-
12-09-2019 - |
Вопрос
У меня есть две базы данных SQL Server (2000).Оба используются для одного и того же проекта, но в разных версиях.По сути, старая база данных взята из нашей тестовой среды.Новая база данных взята из среды РАЗРАБОТКИ.У нас также есть среда ПРИЕМКИ, ПРОИЗВОДСТВА и ОБСЛУЖИВАНИЯ, и все они содержат один и тот же проект.(Это наша улица разработки, мы перемещаем версии с D на T, с A на P и, наконец, M.)
Теперь структура базы данных разработки изменилась.Было добавлено несколько таблиц, добавлены или удалены индексы, тип полей изменился, а поля с нулевым значением стали ненулевыми и тому подобное.Тестовая база данных должна быть обновлена с учетом новой структуры, но без какой-либо потери данных.Прямо сейчас я делаю это с большим количеством ручного труда.Я веду список структурных изменений, и как только все будет готово, я пишу сценарий обновления, чтобы исправить старую тестовую базу данных.
Но как инженер-программист, я просто ленив по замыслу.Итак, есть ли где-нибудь какой-нибудь простой инструмент, который сравнит две структуры базы данных и сам сгенерирует скрипт обновления?
(Кстати, только для того, чтобы изменить структуру.Никаких манипуляций с данными!)
Решение
Взгляните на Сравнение SQL Red Gate с..полная безопасность в жизни
Другие советы
Да, лучший из них, на мой взгляд, - это Красные Ворота
Предлагаемый ими набор инструментов SQL очень хорош, который включает в себя набор инструментов, или вы можете просто запустить SQL Compare самостоятельно.Не бесплатно (за исключением 14-дневной пробной версии, я думаю), но вполне стоит своих денег
На работе мы использовали несколько инструментов;AdeptSql Diff и мы тестировали Redgate-что-то-такое.AdeptSql был значительно дешевле Redgate, и хотя в Redgate было много очень приятных наворотов, поскольку у нас уже был Adept, мы решили остаться с ним.
Мне жаль, что я не знаю ни одного бесплатного инструмента навскидку;Я знаю, что у Redgate, по крайней мере, есть испытательный срок.
Я использовал *nix
инструмент командной строки под названием sqlt-diff, который использует Perl SQL::Translater (SQLFairy) для генерации различий между схемами базы данных SQL.
https://metacpan.org/pod/distribution/SQL-Translator/script/sqlt-diff
Это бесплатный инструмент с открытым исходным кодом.Я вручную отредактировал сгенерированные различия, чтобы немного настроить их.