I work for a up and coming Dotcom. We are looking at automated deployment of T-SQL from Dev then Route To Live then Pre-Prod and then Production.
There is testing at each stage - technical and business. Our aim is to provide continuous delivery mechanism to our web application (500Gb of Prod Data , partitioned tables , decent physical boxes)
Some of our dev's have proposed Entity Framework Migrations Libraries within .Net.
I like their idea's in principle but being a DBA of some years I'm wondering what numerous pitfalls await.
Does anyone have experience of a solid continuous delivery mechanism for SQL Server 2008 and beyond for deploying across environments. We have agreed downtime so the concurrency aspect is not a concern. My concern would be roll back and forth of database versions based on an external software i.e .net framework. I guess if you understood the dependencies between objects and data this would be ok but I'm unsure. I'm unsure if the framework would be able to handle anything beyond very basic DML.... (what about SQL Agent jobs ? etc )
My personal thoughts are ok for most aspects that have no direct underlying data i.e rebuilt ok for stored procs without dropping plans and rebuild of views. These account for 70% of changes anyway. Also deployment of any new table objects + indexes would be ok.
My gut feeling is, that automating within .net schema changes for tables with 200,000,000 plus rows (across partitions) is not wise. Then again if testing is adequate and backups\backouts in place then why not?
Any feedback most welcome