PDA

Ver la Versión Completa : Controlar Cambios en la Base de Datos


afunez2007
11-07-2013, 18:49:50
Buenos dias

Quisiera alguien me sugiera como llevo un control de los cambios sufridos a la base de datos segun se va desarrollando la aplicacion.

Por ejemplo: Una Base SQL Server, que contiene tablas de clientes, y en un momento la tabla de clientes sufre un cambio ya sea de longitud o tipo de dato, o un campo nuevo, quisiera que si la proxima vez que se ejecute la aplicacion detecte que faltan estos cambios y ejecute un script para hacer las modificaciones a la BD.

Se me ha estado ocurriendo crear tabla de Version de la BD que contenga un campo que guarde la version del exe y basado en eso que verifique los scripts que falta por ejecutar, sin embargo solo esta como idea no tengo codigo para hacerlo.

Si alguien me puede sugerir ideas como controlar esta situacion, se lo agradecere de sobremanera!

Saludos

Casimiro Notevi
11-07-2013, 20:16:39
Hay distintas formas de hacerlo, depende de lo que necesites, puedes hacer algo sencillo o un sistema más completo y complejo.
Puedes guardar en una tabla la versión/subversión de la misma y tu programa, al conectar con la BD, verifica esa versión y actúa en consecuencia.
También puedes tener un programa externo para las actualizaciones, que básicamente le indicas la BD a conectar (o busca todas las que estén en el directorio), va comparando y ejecutando sentencias para convertirla a la última versión.
Las sentencias pueden estar en una BD que va junto al programa de actualización, con los campos habituales: "id, fecha, usuario creador, numero, sentenciasql"
También puedes usar un script en lugar de una BD.
En fin, las opciones son muchas y depende mucho de las necesidades de cada uno.

afunez2007
11-07-2013, 20:23:56
Gracias por tus ideas!!

Me abre mas posibilidades para actuar en consecuencia!!

Saludos

Hay distintas formas de hacerlo, depende de lo que necesites, puedes hacer algo sencillo o un sistema más completo y complejo.
Puedes guardar en una tabla la versión/subversión de la misma y tu programa, al conectar con la BD, verifica esa versión y actúa en consecuencia.
También puedes tener un programa externo para las actualizaciones, que básicamente le indicas la BD a conectar (o busca todas las que estén en el directorio), va comparando y ejecutando sentencias para convertirla a la última versión.
Las sentencias pueden estar en una BD que va junto al programa de actualización, con los campos habituales: "id, fecha, usuario creador, numero, sentenciasql"
También puedes usar un script en lugar de una BD.
En fin, las opciones son muchas y depende mucho de las necesidades de cada uno.

Casimiro Notevi
11-07-2013, 20:49:13
Si necesitas ayuda con algo práctico, ya sabes, aquí estamos.

newtron
12-07-2013, 09:40:07
Hola.

Por si te sirve de algo yo lo que tengo es un fichero .ini con todas las tablas con sus campos y un procedimiento en el programa que se encarga de chequear si las tablas están conforme a estos campos y si no las adapta.

Saludos

Neftali [Germán.Estévez]
12-07-2013, 18:04:12
Se me ha estado ocurriendo crear tabla de Version de la BD que contenga un campo que guarde la version del exe y basado en eso que verifique los scripts que falta por ejecutar, sin embargo solo esta como idea no tengo codigo para hacerlo.


Pues es bastante habitual y creo que no vas mal encaminado.
Los scripts podrían estar en la propia Base de Datos.
El programa de actualización podría ser uno distinto o el propio de la aplicación (si estás seguro de que no tienes ninguna tabla conflictiva abierta).
cada cambio en la estructura implicaría "subir" un número de versión y apuntar los cambios (scripts) necesarios para esa versión.