We keep our schema in an XML file which is kept our source control repository alongside the application code.
We have a tool to generate the XML and to take the XML and compare with a database and altering it to match the XML schema. Though we never delete data due to backwards compatibility, so no dropping of objects, reduction of column widths etc.
When deploying a new version the database is processed first, if successful the new executable is made available. If not it calls home so we can take a look.
To make changes in development, we commit a new XML to dev branch, we have a commit hook to upgrade the dev database.
We have a tool to generate the XML and to take the XML and compare with a database and altering it to match the XML schema. Though we never delete data due to backwards compatibility, so no dropping of objects, reduction of column widths etc.
When deploying a new version the database is processed first, if successful the new executable is made available. If not it calls home so we can take a look.
To make changes in development, we commit a new XML to dev branch, we have a commit hook to upgrade the dev database.