Qual é uma boa maneira de migrar as alterações de banco de dados dos ambientes de desenvolvimento para o controle de qualidade e de produção? Atualmente nós:
- Script a alteração em um arquivo SQL e anexe-a a um item de trabalho do TFS.
- O trabalho é revisado por pares
- Quando o trabalho estiver pronto para teste, o SQL será executado no controle de qualidade.
- O trabalho é testado pelo controle de qualidade
- Quando o trabalho está pronto para produção, o SQL é executado nos bancos de dados de produção.
O problema com isso é que é muito manual. Ele conta com o desenvolvedor lembrando de anexar o sql ou com o revisor por pares, se o desenvolvedor esquecer. Às vezes, acaba sendo o testador ou o implantador de controle de qualidade que descobre o problema.
Um problema secundário é que, às vezes, você precisa coordenar manualmente as alterações se duas tarefas separadas alterarem o mesmo objeto de banco de dados. Pode ser que seja assim, mas ainda parece que deve haver uma maneira automatizada de "sinalizar" esses problemas ou algo assim.
Nossa configuração: Nossa loja de desenvolvimento está cheia de desenvolvedores com muita experiência em banco de dados. Nossos projetos são muito orientados a DB. Somos principalmente uma loja .NET e MS SQL. Atualmente, estamos usando os itens de trabalho do MS TFS para rastrear nosso trabalho. Isso é útil para alterações de código, pois vincula os conjuntos de alterações aos itens de trabalho, para que eu possa descobrir exatamente quais alterações eu preciso incluir ao migrar para os ambientes de controle de qualidade e produção. No momento, não estamos usando um projeto de banco de dados, mas podemos mudar para isso no futuro (talvez isso faça parte da resposta).
Estou muito acostumado ao meu sistema de controle de origem cuidando de coisas assim para mim e gostaria de ter a mesma coisa para o meu SQL.