I am currently working to complete the same task. I have installed nant on my machine, and then created the following folders
./servername/databasename/release
./servername/databasename/restore
./servername/databasename/rollback
./servername/databasename/test
The plan is then to create nant targets for each task (release, restore, rollback,test).
./servername/databasename/restore/000001.set_database_offline.sql
./servername/databasename/restore/000002.restore_database.sql
./servername/databasename/restore/000003.fix_orphaned_logins.sql
./servername/databasename/restore/000004.do_some_operation_example_upgrade_table_x.sql
I then create all my scripts with numeric prefixes, to control sequence of execution. The idea behind this is to create build tasks named to match my folders, so I can just execute commands listed below, which will quickly execute all the scripts in the directories.
nant restore
nant release
nant rollback
nant test
I am thinking I will need to enhance the process already to have separate tests for release and rollback, however this is a work in progress.
Let me know if you choose to follow the same path. Would be really cool to collaborate and share a simple repeatable process.
Reasons for doing this are:
1. Automation
2. Repeatability
3. Consistency
4. Add all code to Source Control
Goal being to be able to deploy and test across multiple environments, and do no code change while promoting code up to production.
Regards,