Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Controlar Cambios en la Base de Datos (https://www.clubdelphi.com/foros/showthread.php?t=83656)

afunez2007 11-07-2013 18:49:50

Controlar Cambios en la Base de Datos
 
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

Cita:

Empezado por Casimiro Notevi (Mensaje 463707)
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

Cita:

Empezado por afunez2007 (Mensaje 463699)
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.


La franja horaria es GMT +2. Ahora son las 17:30:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi