У нас есть внутренний продукт, который решает в том числе именно эту задачу.
Схема базы данных сохраняется в файл специального формата. При обновлении у заказчика с текущей версии его базы снимается такая же схема, потом она сравнивается со схемой, входящей в комплект поставки новой версии, и на основе результатов сравнения генерируется DDL-скрипт, обновляющий базу данных до соответствия новой схеме. Если в новую версию БД вносятся constraint'ы, вступающие в конфликт с существующими данными, то такие случаи отлавливаются на этапе тестирования, и к ним пишутся дополнительные скрипты, выполняемые перед автоматическим обновлением. Эти скрипты тоже включаются в комплект поставки продукта.
Некоторые ORM позволяют автоматически генерировать БД по объектной модели при первом обращении. Насколько я знаю, эта возможность есть у NHibernate, Subsonic и XPO. Работал только с XPO. Впечатления такие: наша система лучше.