Great review Jeremy - thanks!
I would disagree on one point though - using DB Ghost against the production database. I would recommend this for the following reasons:
1. When DB Ghost is actively upgrading a database it can remove "extra" objects as well thus guaranteeing that the target databases schema matches the source code exactly. Using a delta script would not perform this tidy up function and, over time, the production schema could have all sorts of differences. Now, I know that no one is EVER supposed to update the live schema but, whether we like it or not, changes can be made by the production DBAs. Using DB Ghost directly against the schema ensures that this litter is swept up at every release and the staff who make tactical changes will very soon get the message that they need to follow the correct process.
2. If you use DB Ghost to upgrade development, test and UAT then you should use it for production as well as it is simply good practice to follow the same process all the way through the development/deployment cycle.
3. You take a backup of the live database before any upgrade so what's the problem? A script can fail and leave the schema in an unknown state - solution? restore the database. DB Ghost could fail during the upgrade - solution? restore the database and etc. etc.
However, having said all that, I do understand that sometimes it is easier to give the production DBAs a script rather than convince them to use a tool.
Once again - thanks for a great review, it's always good to hear that other people love DB Ghost too!
DB Ghost - Build, compare and synchronize from source control = Database Change Management for SQL Server