Я использую Redgate SQL для сравнения для этого (путем сравнения с пустой БД), а также для выполнения обновлений между всеми версиями БД (я сохраняю копию БД для каждой выпущенной версии, и затем просто сравните текущее и предыдущее, чтобы получить скрипт изменения для этой версии).
Я обнаружил, что «Создание сценариев» в некоторых случаях плохо работает с зависимостями - например, он попытается создать хранимую процедуру, использующую таблицу, до ее создания, что приведет к сбою сценария. Я согласен, что, возможно, я использую это неправильно, но SQL Compare "просто работает". Сценарии, которые он генерирует, также включены в транзакцию - поэтому, если что-то не получается, все изменение откатывается. Вы не получите наполовину заполненную или наполовину обновленную базу данных.
Недостатком является то, что это коммерческий инструмент, но ИМХО стоит денег.