¿Cuál es una buena manera de migrar los cambios de DB de los entornos de Desarrollo a QA a Producción? Actualmente nosotros:
- Script el cambio en un archivo SQL y adjúntelo a un elemento de trabajo TFS.
- El trabajo es revisado por pares
- Cuando el trabajo está listo para la prueba, el SQL se ejecuta en QA.
- El trabajo es QA probado
- Cuando el trabajo está listo para la producción, el SQL se ejecuta en las bases de datos de producción.
El problema con esto es que es muy manual. Se basa en que el desarrollador recuerde adjuntar el sql o que el revisor externo lo capture si el desarrollador se olvida. A veces, termina siendo el probador o el implementador de control de calidad que descubre el problema.
Un problema secundario es que a veces es necesario coordinar manualmente los cambios si dos tareas separadas cambian el mismo objeto de la base de datos. Esto puede ser así, pero parece que debería haber alguna forma automatizada de "marcar" estos problemas o algo así.
Nuestra configuración: nuestra tienda de desarrollo está llena de desarrolladores con mucha experiencia en DB. Nuestros proyectos están muy orientados a DB. Somos principalmente una tienda .NET y MS SQL. Actualmente estamos utilizando elementos de trabajo de MS TFS para rastrear nuestro trabajo. Esto es útil para los cambios de código porque vincula los conjuntos de cambios a los elementos de trabajo para que pueda averiguar exactamente qué cambios necesito incluir al migrar a los entornos de control de calidad y producción. Actualmente no estamos utilizando un proyecto de base de datos, pero podemos cambiar a eso en el futuro (tal vez eso sea parte de la respuesta).
Estoy muy acostumbrado a que mi sistema de control de código fuente se encargue de cosas como esta y me gustaría tener lo mismo para mi SQL.