Managing releases for a database usually involves migrating static data and running scripts to update / create programmable elements (sprocs, UDFs, triggers, etc.) and modify existing schema definitions. It seems to me that you lack scripts. If you make changes manually to your development database and do not create scripts that reflect these changes, you will need to repeat the same steps manually as your test / production environments, which you say are error prone and dangerous.
SQL Server Management Studio makes it easy to save scripts that reflect changes in any database objects. The toolbar should have a “Generate change script” icon, which gives you the ability to save the SQL file to disk. Then you can use this for the same change with another server. You can also manually script to save any or all saved procs, UDFs, triggers, etc., and also run them on the server (just right-click on them).
As for rollback, this is usually achieved by restoring a database backup made just before the start of the deployment process.
The whole process tends to be different for each company, but usually how it is done.
ORMs that automatically generate circuits always seemed evil to me, not to mention the fact that it’s almost impossible to use against a production box, but I think there is an option.
source share