Im looking for a tool (preferably open-source) that can do Database migrations and versioning inside TFS, and is able to automatically deploy this during an deployment / build.
Background
We have developed an application that is frequently updated, sometimes with database changes and sometimes without. The database is running on Oracle 11g, there is also an Sqlite database in place to run tests against. We use NHibernate in combination with Fluent-NHibernate as ORM (Fluent-NHibernate for the mappings).
Current situation
At this time the database changes are done by hand. Changing the fluent mappings for database creation and writing a SQL script to alter / drop / create about anything we need. To go to Test / Acceptence / Production we build against a different Config and then Copy the contents to the specific server and run the specific SQL scripts on the database.
Drawbacks
The schemaupdate from NHibernate does not allow for destructive updates, so this has to be done by hand if we are looking for an NHibernate solution.
Preffered situation
the above is a workable solution but now we have the need to version these changes so that we can go up / rollback (if this is needed) if we deploy a new version by using Expand/Contract. it is preffered that this is done automatically when we deploy a new version to the database.
Questions
- Is there a migration tool thas uses Expand and Contract for generating schema's
- Will it work with Oracle 11g, SqLite and SqlServer
- Possibility to keep using NHibernate / Fluent-NHibernate
- Good ways to automatically deploy a specific build (Not a must have, are enough tools to do this but maybe good to have someting that can do all)
Investigated
- RoundhousE
- No rollbacks.
- Unable to get it working with our mappings.
- FluentMigrator
- Cannot combine with NHibernate mappings uses it's own Fluent interface.
- Red-Gate Deployment Suite for Oracle
- Tool cannot be easily integrated with our environment.
I hope this is clear, if not feel free to comment