PDA

Ver la Versión Completa : Problema con Control de Versiones


AGAG4
02-05-2006, 23:31:02
Uso Firebird 1.53, estoy empezando a llevar un control de versiones de mis Bases de Datos, es decir, si se realiza algún cambio en la Estructura de estos, voy añadiendo los Script's a 1 archivo de texto para Ejectutarlos en Otras Sucursales donde también vayan a ocupar dicha Modificación, pero tengo el siguiente Problema, ejecuto los Script's dentro del Script EXECUTE del IBEXPERT en la primer línea Ejecuto un Store Procedure para comparar de que Sistema se Trata, la Versión y la Fecha de Versión si la Versión ó la Fecha de Versión es Diferente con la que tiene actualmente la Base de datos se lanza una excepción pero el problema es que se continua con las demás Instrucciones del archivo y es lo que no quiero, pongo un ejemplo del contenido del archivo de texto:

/*Llamamos Versión Actual si se lanza una Excepción DESEARÍA QUE NO CONTINUARÁ HACÍA ABAJO*/

EXECUTE PROCEDURE REVISA_VERSION('FAC',1.010,'20.04.2006') ;

/*Actualizamos SISTEMA*/
Update TSISTEMAS set Version = 1.010,Fec_Ver='02.05.2006' where Clave='FAC' ;

/*Agregamos Campo en Tabla*/
ALTER TABLE TCOMPUTADORAS
ADD CVEUSUARIO ENTERO_N ;


El Contenido del Procedimiento Almacenado es:

CREATE PROCEDURE REVISA_VERSION(
SISTEMA VARCHAR(3),
VERSION_SIS FLOAT,
FECHA_VERSION DATE)
RETURNS (
ERROR SMALLINT)
AS
DECLARE VARIABLE XVERSION FLOAT;
DECLARE VARIABLE XFEC_VER DATE;
begin
Select Version,Fec_Ver from tsistemas
where
Clave = : Sistema
into
:xVersion ,:xFec_Ver;
if (:xVersion <> :Version_Sis or :xFec_Ver <> :Fecha_Version) then
Exception EX_VERSION_DIFERENTE;
end


Como ven la excepción se lanza y me la muestra pero que tengo que hacer para que se detenga????

Tendré que hacer una aplicación en delphi para cachar dicha Excepción????

Agradezco cualquier sugerencia.

lpmlpm
03-05-2006, 01:10:34
para controlar la estructura de tu base de datos, no te sirve mejor un sincronizador de metadatos (http://www.ibexpert.com/download/PlugIns/ibdbcomp.zip)??

Asi te evitas estar aplicando uno a uno los scripts a una versión muy vieja de tu sistema, con estas herramientas directamente actualizas a la última versión todo el esquema de tu base de datos, puede ser que solo mantengas un script con el metadata "actual" para que desde ese puedas actualizar cualquier base de datos...

Saludos

Neftali [Germán.Estévez]
03-05-2006, 09:32:52
Tal vez deberías utilizar una transacción para realizar todos los cambios. Si es que te interesa que se realizen todos o no se realize ninguno.

AGAG4
27-05-2006, 02:39:16
Gracias por sus respuestas....

Opte por hacer una aplicación para ejecutar Scritp's

Que tengan buen día.