2010-02-17 22 views
10

Descripción del problema:Buscando solución para control de versiones de base de datos

En nuestro proyecto tenemos una "base de datos de producción" y muchos "desarrolladores". Queremos saber cómo podemos administrar e instalar los cambios. Ya tenemos algunos procedimientos, pero lleva mucho tiempo y a veces causa errores.

No podemos perder datos, por lo que no podemos usar "drop table". Solo podemos usar "alter table".

Nuestra actual "procedimiento db de versiones" es la siguiente:

  • tenemos una tabla llamada [actual_version] que contiene la versión actual del esquema de db instalado
  • Tenemos un archivo llamado "changes_script. sql" que contiene todos los cambios de base de datos - este archivo se almacena en SVN

Cuando un desarrollador quiere cometer una nueva revisión de SVN necesita change_script.sql mediante la adición de un bloque :

if ([acctual_version].version < "23")) { 
    --- sql script ---- 
updateVersionTo("23") 
end if 

Cuando queremos actualizar el esquema de base que acabamos de "ejecutar" el change_scripts.sql

¿Alguien tiene una idea mejor?

+0

Gracias por su respuesta ... Creo que todo lo que necesitamos son buenas herramientas DB Comparer. Lo que quiero hacer es seleccionar dev_db y production_db y hacer clic en el botón "buscar diferencia". Luego puedo copiarlo manualmente para cambiar el script. ¿Tienes alguna idea? Hemos probado el Sql Compare de Red Gate y no fue realmente útil – itdebeloper

+1

¡Hola! Soy un gerente de producto en Red Gate y tengo curiosidad por saber cuáles son las deficiencias de SQL Compare para usted. Por favor, siéntase libre de ponerse en contacto! Mi correo electrónico es David.Atkinson en Red-Gate.com –

Respuesta

1

¿Has oído hablar de Visual Studio Database Edition? Si actualmente está utilizando VS Team Suite o VS Developer Edition, lo obtiene gratis. Es una herramienta de administración de esquemas de base de datos que la versión controla su esquema, permite la refactorización, las compilaciones, el análisis del código y la implementación.

Lo usamos para gestionar nuestros esquemas DB e implementaciones. Gran herramienta.

5

herramienta Sql Compare Red Gate puede comparar dos tablas (o dos colecciones de secuencias de comandos DDL, o un conjunto de secuencias de comandos a una mesa, etc.) y generar el script de migración para usted.

Si está trabajando en Ruby puede consultar "Ruby Migrations", que es una forma formalizada de hacer versiones DB en el código. (Hay cosas similares en .NET como RikMigrations y Fluent Migrator, y estoy seguro de que existen cosas similares para otras plataformas también).

Como dijo Randy Minder, también puede usar VS DB Edition para administrar su esquema, aunque creo que las herramientas RedGate funcionan igual de fácilmente y no lo vinculan a una plataforma específica o IDE.

+0

@Seth - VS Database Edition hace mucho más que simples comparaciones de esquemas, es una herramienta de gestión de versiones/esquema de bases de datos. Lo usamos para controlar la versión de nuestro esquema de DB en TFS. –

+0

@Randy: Teniendo en cuenta, no quise dar a entender que la edición de DB era pobre. Mi punto es que he usado SQL Compare y TFS para cambiar el esquema de control de versiones entre las versiones de software, y que si una licencia VS es prohibitivamente costosa, o si alguien no está trabajando en .NET, no es demasiado difícil rodar su propio sistema usando una herramienta de comparación de esquemas, un VCS y un poco de proceso. –

+0

SQL Compare es una gran herramienta y se puede utilizar en su sistema actual para generar scripts para realizar actualizaciones de versiones. Tienen una versión de prueba, descárguelo y pruébelo entre dos DB que cree que tienen el mismo esquema, si son iguales, me comeré mi sombrero. – Hogan

3

Lo hago very similarly, pero uso las propiedades extendidas de la base de datos en lugar de una tabla para rastrear la versión de metadatos y los pasos de actualización se definen en la aplicación, en lugar de un solo script. La mayoría de los pasos de actualización son solo execute script Upgrade.vX.Y.sql.

realidad Encuentro su enfoque superior al esquema de herramientas de comparación (y eso incluye VS DB despliegue) por varias razones:

  • no me fío de herramientas de comparación esquema de cambio de tablas muy grandes, yo preferiría tener un probado script específicamente diseñado para mi tabla de registros 150B.
  • comparación de esquema no se ocupa de la eliminación de objetos obsoletos
  • Si el esquema de aplicación se modificó en un sitio del cliente una herramienta de comparación ciegamente tratar de actualizarlo, pero un esquema modificado puede necesitar un tratamiento especial: la inspección de los cambios, evaluación de impacto, facturación de trabajo extra.
1

Describa un proceso que se está utilizando en muchas tiendas de desarrollo, estoy bastante seguro, incluso en mi empresa.

Si desea seguir con esto, una herramienta que nos ha ayudado es SSW SQL Deploy que le permite tomar un montón de scripts (tenemos una carpeta de "cambios" para cada versión, y los archivos tienen la etiqueta "001_something.sql" "a través de" 999_somethingelse.sql ") y ejecutarlos como un todo contra una base de datos. También puede incluir eso en sus aplicaciones .NET a través de una API, o puede iniciarlo desde la línea de comandos durante una instalación.

El extremo más alto del espectro es adoptar un proceso de gestión de cambio de base de datos completo, algo así como DB Ghost de Innovartis, que es mucho más que un montón de herramientas. Pero esto requeriría que usted y sus desarrolladores adopten ese estilo a fondo y lo vivan y lo respiren. Muy interesante, pero hasta ahora, no he logrado convencer a mis desarrolladores y jefes :-(Tal vez usted tiene más suerte

Cuestiones relacionadas