Control de fuente de base de datos frente a scripts de cambio de esquema
-
15-09-2020 - |
Pregunta
La construcción y el mantenimiento de una base de datos que luego se muestra / desarrollada por muchos DEVS es algo que continúa en el desarrollo de software todo el tiempo. Creamos un script de compilación y mantenemos más información sobre la actualización de scripts que se aplican a medida que la base de datos crece a lo largo del tiempo. Hay muchas maneras de administrar esto, desde actualizaciones manuales a las aplicaciones de consola / scripts de compilación que ayudan a automatizar estos procesos.
¿Alguien que haya construido / administrado estos procesos movidos a una solución de control de fuente para la gestión del esquema de la base de datos? Si es así, ¿qué han encontrado la mejor solución para ser? ¿Hay escollos que deben evitarse?
La puerta roja parece ser un gran jugador en el mundo de MSSQL y su control de fuente de DB se ve muy interesante: http://www.red-gate.com/products/solutions_for_sql/database_version_control. htm
Aunque no parece que reemplaza el proceso de administración de datos (predeterminados) *, por lo que solo reemplaza la mitad del proceso de administración de cambios de mi POV.
(cuando estoy hablando de datos, me refiero a los valores de búsqueda y ese tipo de cosas, los datos que deben implementarse de forma predeterminada o en un escenario DR)
Trabajamos en un entorno .NET / MSSQL, pero estoy seguro de que la premisa es la misma en todos los idiomas.
Solución
Preguntas similares
Una o más de estas preguntas existentes pueden ser útiles:
- la mejor manera de administrar los cambios de la base de datos
- Seguimiento de cambio de base de datos MySQL
- Base de datos de SQL Server Cambiar las mejores prácticas de flujo de trabajo
- Verificar cambios de la base de datos (control-control)
- Transferencia de cambios de un DEV DB a una producción Db
- Cambios de seguimiento realizados en la estructura de la base de datos
o una búsqueda de cambio de la base de datos
Otros consejos
Busco un almacén de datos desarrollado internamente por el banco donde trabajo. Esto requiere una actualización constante, y tenemos un equipo de 2-4 devs trabajando en él.
Somos afortunados porque solo hay una instancia de nuestro "producto", por lo que no tenemos que atender a la implementación de múltiples instancias que pueden estar en diferentes versiones.
Mantenemos un archivo de script de creación para cada objeto (tabla, vista, índice, procedimiento almacenado, disparador) en la base de datos.
Evitamos el uso de ALTER TABLE
Siempre que sea posible, prefiriendo cambiar el nombre de una tabla, crear la nueva y migrar los datos. Esto significa que no tenemos que mirar a través de un historial de scripts de ALTER
: siempre podemos ver la versión actualizada de cada tabla al ver su script de creación. La migración se realiza mediante un script de migración por separado, esto puede ser parcialmente generado automáticamente.
Cada vez que hacemos una versión, tenemos un script que ejecuta los scripts de creación de scripts / migración en el orden apropiado.
FYI: Utilizamos Visual SourceSafe (¡Yuck!) Para el control del código fuente.
He estado buscando una herramienta de control de fuente de SQL Server, y se encontró con muchas versiones premium que realizan el trabajo, utilizando SQL Server Management Studio como un complemento.
Liquibase es libre, pero nunca lo tengo de acuerdo con mis necesidades.
Hay otro producto gratuito por ahí, aunque eso funciona, a lo largo de SSMS y Scripts Out Objects and Data a File Flat.
Estos objetos se pueden bombear en una nueva instancia de SQL Server, que luego volverá a crear los objetos de la base de datos.
consulte gitsql
Tal vez estés pidiendo ¿Liquibase ?