2010-07-29 13 views
7

¿Cuál sería el mejor enfoque para el control de versiones toda mi base de datos?Obtener mi base de datos bajo control de versiones utilizando un DVCS [Mercurial]

Crear un archivo para cada objeto de la base de datos (tabla, vista, procedimiento ...) o más bien tener un archivo para todas las secuencias de comandos DDL y cualquier cambio nuevo se colocará en un archivo separado?

¿Qué pasa con los cambios realizados en el manejo de una herramienta del gestor de bases?

me gustaría tener unas soluciones genéricas para cualquier tipo de RDBMS.

¿Hay alguna otra opción?

+0

Microsoft SQL Server se puede poner en Fuente Segura de control de versiones, no estoy informado de otras soluciones similares. Realmente me gustaría encontrar alguna otra solución que funcione para otras bases de datos. –

+0

@Flakron Bytyqi: ** Source Safe ** ?! Si [Eric Sink] (http://www.sourcegear.com/vault/) ve esto, irá personalmente a su casa y lo cortará a la mitad con una factura de venta. –

Respuesta

1

Si necesita una solución genérica: coloque todo en las secuencias de comandos (archivos de texto simples) y colóquelo en el sistema de control de versiones (se puede usar cualquiera de VCS).

Agrupación de objetos de bases de datos similares en guiones será depende de sus necesidades.

por lo que puede por ejemplo:

de mesa tienda/índices/en una o varias guión Cada tienda procedimiento en escritura individuales o combinar procedimientos pequeños en una secuencia de comandos.

Sin embargo, hay que recordar algo importante con este enfoque: no olvide cambiar scripts si cambió la tabla/vista/procedimiento directamente en las bases de datos y no crea/recrea/compila los objetos db en la base de datos después de cambiar los scripts.

2

Tener un vistazo a este post

3

Soy un gran fan de VCS en general y un gran refuerzo Mercurial, pero realmente creo que va por el camino equivocado.

Los VCS no solo se trata de cambios iterativos, el "qué", sino también de responder al "quién", "cuándo" y "por qué". Para una base de datos, esas respuestas son mucho menos interesantes o difíciles de proporcionar al VCS. Si realiza exportaciones todas las noches y confirma el "quién" siempre será "cron" y el "por qué" siempre será "medianoche".

La otra cosa VCSs moderna se sabe muy bien está ayudando fusiona cambios de múltiples ramas. Eso es menos aplicable en el mundo de la base de datos. Muy pocas veces dices "Quiero esta estructura de tabla, pero estos datos", y si lo haces, la combinación de texto/diferencias no te va a ayudar mucho.

Lo que hace muy bien "qué" y "cuándo" es un sistema de copia de seguridad incremental, y esa es probablemente la mejor opción.

En el trabajo utilizamos Tivoli y en casa uso rdiff-backup y duplicity, pero hay muchas opciones geniales.

Creo que mi regla general es "si se ha escrito a mano por un ser humano y luego lo hace en control de código fuente, y si se generó/exportados luego se va en las copias de seguridad incrementales"

Ciertamente puede hacer que esto funcione, pero no creo que le compre mucho sobre las soluciones de copia de seguridad más tradicionales.

+0

Me inclino a estar en desacuerdo. Trabajamos en nuestra base de datos con varios desarrolladores y estamos creciendo, y las cosas se vuelven un desastre porque no podemos rastrear fácilmente los cambios en nuestro código. Los datos no son el problema, que se pueden manejar con copias de seguridad regulares. Es el código que necesita estructura. – thomaspaulb

1

SQL Source Control actualmente es compatible con SVN y TFS, pero las solicitudes de Mercurial están aumentando rápidamente y esperamos tener una historia para esto muy pronto.

Utilizamos UserVoice para medir la demanda por lo que vote en consecuencia si usted es interesante en este: http://redgate.uservoice.com/forums/39019-sql-source-control

+1

Buenas noticias: SQL Source Control ahora se ha lanzado con soporte para Mercurial (y cualquier sistema de control de fuente con una línea de comando adecuada). –

Cuestiones relacionadas