2009-06-05 11 views
8

Soy ingeniero de construcción y soy responsable de nuestro diseño de control de origen. Necesitamos mantener una versión de todos los objetos de la base de datos y también los cambios de grupo junto con los scripts de retroceso para impulsar la producción. Tenemos entornos de desarrollo, control de calidad y producción, y existen diferentes versiones de los objetos de la base de datos en cada uno. Un área que tenemos problemas es con table crea vs altera. Los desarrolladores verificarán los cambios pero recrearán la base de datos que necesitamos. Cualquier idea sería apreciada.Scripts SQL en Subversion

+0

En realidad, no estoy seguro de lo que quiere decir con "Un área que tenemos problemas es con table crea vs altera. Los desarrolladores verificarán altera pero recrearán la base de datos que necesitamos crea.", ¿Podría ser más específico? – marcgg

+0

Creo que quiere decir que verifican un archivo de código SQL para un SP que comienza con 'ALTER PROC', pero usan/necesitan 'CREATE PROC' para que pueda crear el DB desde cero. – Paul

+0

Eso es exactamente lo que quise decir @Paul gracias por la aclaración. –

Respuesta

2

Este artículo debe responder a la mayoría si no todas las preguntas

http://odetocode.com/Blogs/scott/archive/2008/01/30/11702.aspx

+0

Este artículo básicamente vuelve a preguntar mi pregunta, la sección 3 es lo que estoy tratando de lograr. Estoy buscando una estructura y/o proceso que me permita versionar mis bases de datos y cumplir con las otras limitaciones de mi pregunta. Gracias por el artículo tho. –

+0

lmgtfy "site: versioning de la base de datos odetocode.com" parece bastante prometedor – dotjoe

+0

Este sitio contiene una gran cantidad de información sobre cuestiones relacionadas con el control de versiones que lleva un tiempo analizarlo pero merece la pena. Gracias –

1

Usted debe mirar en qué marcos como rieles manejan las migraciones

http://dizzy.co.uk/ruby_on_rails/cheatsheets/rails-migrations

+0

No estoy realmente buscando formas de generar la base de datos solo para versiones y rastrear lo que está sucediendo con ella. –

+0

Si usa migraciones, todo se pondrá en subversión y podrá usarlo para rastrear todo. Además, es una forma genial de manejar los cambios en la base de datos. No creo que entienda totalmente sus problemas, pensó – marcgg

3

Soy un gran fan de http://www.liquibase.org/. Le permite rastrear versiones de su base de datos, incluida la capacidad de "actualizar" y "deshacer" su esquema/datos.

Ellos tienen una sintaxis agradable XML que se ha cocido en apoyo a refactorizaciones comunes, incluyendo los que se detallan en http://databaserefactoring.com/

También tienen plugins de Eclipse para ayudar a crear las secuencias de comandos de cambio, y la tarea de hormiga para integrar en su construcción.

Mi única queja es que está basada en Java y me gusta instalar Java en mi servidor de compilación para proyectos .NET. En ese caso, he escuchado cosas buenas sobre http://code.google.com/p/migratordotnet/.

+0

He votado esto porque me gusta el enlace a migratordotnet. Tendré que investigar eso especialmente la Tarea MSBuild. Gracias –

0

que se puede recomendar este escenario:

  1. Dbunit para la población de datos (por ejemplo, diccionarios, datos maestros y otra información de la base de datos crítico)
  2. Liquibase de dbdeploy de refactorización de base de datos. En mi opinión liquibase es una herramienta más orientada a la refactorización y dbdeploy - más orientada al proceso (es decir, hay que hacer más a mano, pero simplifica el desarrollo, las pruebas y el proceso de soporte de producción).

Si su empresa está utilizando ORM, puede crear el esquema de base de datos "diff" sobre la marcha basado en el motor ORM. Además, si su producto funciona con diferentes bases de datos, tendrá un nivel adicional de complejidad. Desafortunadamente, ni dbdeploy, ni liquiase me satisficieron por el desarrollo/refacturación de bases de datos múltiples.