Redgate SQL Source Control recomienda el flujo de trabajo para las bases de datos dev-test-live

Estamos tratando de comenzar con el control de fuente SQL y tenemos algunas preguntas.

Esto es hacia lo que estoy apuntando. ¿Esto parece que va a funcionar?

  1. Modificar las tablas / procs de la database dev
  2. Commit to dev git branch en la PC de dev
  3. Empujar los cambios al repository central
  4. Repita los pasos 1-3 para cada cambio
  5. Merge la twig de desarrollo en la twig de testing
  6. Use SQL Source ConGtrol "Get Latest" en la twig de testing
  7. Aplicar cambios para probar DB
  8. Repita los pasos 5 a 8 pero desde la testing hasta la vida

Nota: – Utilizando el model de desarrollo "Base de datos compartida".

Preguntas:

  • ¿Esto parece que va a funcionar?
  • ¿Puede SQL Source Control aplicar los cambios a la testing y bases de datos en vivo?
    • o ¿necesito comprar una copy de SQL Compare para el server de desarrollo para realizar esta tarea?

enter image description here

  • Repare el diagtwig aquí: http://goo.gl/l2mJdt
  • Más notas y experiencias en mi Google Doc

Es fantástico que estés implementando una copy versionada de los cambios de tu database desde el repository, eso es una buena práctica de entrega continua a mis ojos.

Tiene algunas sugerencias sobre sus preguntas (tengo mi sombrero de Red Gate)

  • Por lo general, no recomendaría conectar SQL Source Control a su entorno en vivo. Realiza una encuesta para search cambios, y es posible que no sea algo que desee en su sistema en vivo. La recomendación es utilizar SQL Compare en su lugar para realizar implementaciones únicas en los sistemas UAT / Production. Alternativamente, el producto de Red Gate Deployment Manager puede ser de su interés.

  • Usted pregunta más arriba sobre el modo Compartido / Dedicado en la testing. No importa si está utilizando una database compartida para sus desarrolladores en su twig de desarrollo, y luego un model dedicado en su twig de testing. Si los únicos cambios en la database de testing provienen de un lugar (por ejemplo, las implementaciones de git), entonces probablemente sea mejor ejecutar esa database en modo dedicado.

Dibujé un diagtwig con algunos ajustes al tuyo. No estoy seguro de si está utilizando un server de CI, pero he agregado dónde podría encajar en el process también. Este diagtwig asume modos dedicados para los dos desarrolladores, pero podría ser una database compartida en su lugar.

Red Gate SQL Source Control Entrega continua de la base de datos

Sí, creo que esto debería funcionar bien. Tradicionalmente, el tema de la fusión de sucursales ha causado problemas con las secuencias de commands de migration, aunque la versión beta de Migrations V2 aborda este problema y otros.

Si tiene algún tipo de sistema de compilation vinculado a su repository, probablemente pueda automatizar la última parte donde implementa para probar con el uso del package SQL Automation ; por ejemplo, algo como TeamCity podría activarse al hacer la fusión y luego automáticamente Prueba de actualización para ahorrarlo manualmente y necesita hacerlo.

Sí, esto parece funcionar siempre que uses el model de connection correcto.

No se considera mejor práctica por parte de Red Gate ( He aquí por qué ). Ellos prefieren que también compre SQL Compare.

Simplemente puede conectarse a todas las bases de datos usando el model dedicado, pero pierde la capacidad de ver quién ha modificado un object en particular, pero puede fusionar parches desde vivo.

Prefiero esto:

  • Los desarrolladores se conectan usando el model compartido
    • entonces puedes ver quién ha modificado cada tabla / proc / etc.
  • También mantenemos una carpeta de trabajo en el server de desarrollo usando el model compartido.
    • Esto nos permite usar get-latest para actualizar dev con parches de Live.

Podría ser más simple si se lanza una característica de model mixto (Vote aquí ).

Diagrama que muestra las rutas de cambio