Pregunta

El sistema de software que trabajo es un sistema de facturación médica, grandes cantidades de datos y tablas de datos y procedimientos almacenados.

Yo estaba leyendo el artículo " 12 pasos para el mejor código " y en el Joel prueba # 2 dice:? ¿se puede hacer una acumulación en un solo paso

Ahora me preguntaba, ¿significa esto acumulación de despliegue (por lo que un cliente puede actualizar su despliegue).

Ahora el principal problema que estoy corriendo a través, es ¿cómo se hace una actualización de base de datos de un solo paso?

En el momento actual, cuando hacemos cambios en una base de datos, todos los cambios se registran y se añade a una secuencia de comandos de actualización de base de datos, que recibe un número de versión que se le atribuye cuando se crea un despliegue para construir cliente.

¿Hay una manera más sencilla de hacer esto? Una secuencia de comandos o aplicación por ahí que tiene un "antes y un después" miran a un esquema de base de datos y crea un script de actualización, como he mencionado?

O es sólo la forma en que todos lo hacen, lo que iba a encontrar difícil de creer, pero posible.

Un sistema automatizado podría disminuir los errores y acelerar el despliegue construir veces considerablemente, y yo estaría interesado en saber cómo hacerlo.

¿Fue útil?

Solución

Hay varios niveles de complejidad que puede ir a través de:

  • Si tiene scripts de actualización que se crean de forma manual, y sólo están buscando una manera de aplicar fácilmente a los distintos servidores, echa un vistazo a la SSW SQL Implementar por SSW Consulting. Se puede manejar ese escenario muy bien

  • Si usted tiende a hacer más de un enfoque diff base de datos, a continuación, Red Gate SQL Comparar (ya mencionado) y SQL Packager hacer una gran combinación. Puede diff la base de datos entre viejo y nuevo y luego aplicar los cambios en un paquete agradable - como un archivo EXE o un proyecto de C #

  • si quieres un acercamiento real, de extremo a extremo, bien pensado (con un poco de una curva de aprendizaje), echa un vistazo a enfoque Innovartis' DBGhost . Es una metodología entera / técnica de cómo manejar el desarrollo de bases de datos y actualizaciones incrementales. Es muy potente y parece muy prometedor - pero es un poco de un enfoque de todo o nada: o bien comprar en ella y utilizarla de extremo a extremo, o no lo hace

Espero que esto ayude un poco!

Otros consejos

Redgate tiene una herramienta SQL Comparar para comparar bases de datos y generar una secuencia de comandos para sincronizar. Solíamos usar, pero más recientemente cambiamos a las secuencias de comandos manuales utilizando el mismo proceso que usted describe. El uso manual, de grano fino, scripts con un número de versión único ha funcionado bien.

Tenemos nuestros scripts de actualización integrados en las pruebas de unidad para que se hagan la prueba junto con el código como parte de la integración continua. Creo que esto es una parte importante de "presentar una acumulación en un solo paso."

Tome un vistazo a esta entrada del blog. He utilizado este tipo de script de actualización única desde cualquier versión DB en un par de proyectos y funciona bastante bien.

http: / /blogs.msdn.com/danhardan/archive/2007/03/30/database-change-scripts-mambo-style.aspx

Es posible que tenga que ajustar el flujo de trabajo un poco para adaptarse a su flujo de trabajo y / o actualizar el archivo .sql plantilla, pero en general me he encontrado la idea de ser un enfoque bastante sólido para las implementaciones de base de datos.

EDIT: Sólo para explicar de qué forma he utilizado esta técnica. Básicamente, todos mis guiones de revisión DB llegar a poner en control de código fuente. Entonces, como un paso posterior a la construcción de la caja de acumulación, esta herramienta Mambo se ejecuta en el directorio de secuencias de comandos para rodar las secuencias de comandos en una única secuencia de comandos abarcada por una transacción para permitir la reversión si algo va mal. A continuación, el instalador es lo suficientemente inteligente como para buscar la secuencia de comandos .sql para funcionar en contra de la base de datos existente.

La razón por la que esto funciona es porque el guión enrollado comprueba cada pieza que era un guión individuo ya se ha ejecutado en contra de la base de datos deseada. Como resultado, sólo las últimas secuencias de comandos se ejecutan consiguen. Una salvedad a esto es que una vez que un script se registró en control de código fuente y se ha desplegado, no se puede editar desde la tabla de seguimiento ya piensa la secuencia de comandos se ha ejecutado. Eso está bien para los proyectos en los que he trabajado, ya que sólo tiene que añadir otro script en la carpeta scripts.

Con suerte estoy explicando el proceso lo suficientemente bien como para entender. Es realmente no es tan complejo y puede ser muy útil si el enfoque es aplicable a su proyecto.

Respuesta a la primera pregunta de "Ahora me preguntaba, en realidad promueve el despliegue significa esto (por lo que un cliente puede actualizar su despliegue)?"

Creo que el Test de Joel # 2 no es para el despliegue de movimientos para empujar, pero para continuios Intergration durante el desarrollo.

En cuanto a la base de datos cambia en prod, todos ellos deben hacerse a través de una secuencia de comandos como parte de un despliegue transacción o después de la base de datos ha sido respaldado. Uno siempre quiere ser capaz de navegar de vuelta si algo falla en el despliegue.

Desarrollar su base de datos como un conjunto de parches que dependen unos de otros. A continuación, utilice una herramienta como https://github.com/LuvDaSun/sqlpatch (por mí) para construir una archivo sql para la implementación.

sqlpatch clasificará los parches en el orden correcto y asegúrese de que cada parche se ejecuta exactamente una vez, incluso si la misma secuencia de comandos se ejecuta dos veces.

Esta estrategia se puede utilizar para el despliegue de su base de datos en un entorno de CI / CD. Este despliegue hacer tan fácil como pulsar a una sucursal.

Hay aplicaciones que se sincronizan las bases de datos, pero creo que su mejor haciendo lo que está haciendo. Escribir un guión para actualizar una base de datos le da la capacidad para controlar los errores y las transacciones de ejecución. Esto se considera la mejor práctica.

aplicaciones de capa de datos en SQL 2012 como una opción gratuita para implementar y actualizar bases de datos.

Yo uso y al igual que esta herramienta, incluso para los despliegues de producción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top