En busca de las reorganizaciones perdidas.
Como contaba en el post anterior, uno de nuestros clientes tenia un problema pues habia perdido alguna reorganizacion.
El escenario de trabajo es este:
* KB centralizada, donde mas de una persona consolida los cambios y genera reorganizaciones. Esta en .NET y SQL Server 2000.
* Base de datos de Pre-Produccion donde se realizan los cambios con las reorganizaciones Genexus
* Base de datos de Producción, donde se ejecutan las mismas reorganizaciones que en pre-producción.
El problema se daba porque se habían generado 2 reorganizaciones y no se había salvado la anterior. Por lo tanto, no se tenían todas las reorganizaciones para ejecutar en PRODUCCION.
La situación empeoraba, porque la segunda reorganización necesitaba cambios realizados en la reorganización anterior.
Para arreglar esto, teníamos varias opciones. La que me resulto mas sana, porque solucionaba varios problemas a la vez, era comparar la base de datos que GeneXus pensaba que tenia, con la base de datos real y sincronizar las diferencias.
Los pasos realizados:
1) Hacer una copia del directorio raíz de la KB centralizada, para trabajar mas rapido y sin entorpecer el desarrollo de los demas.
2) Hacer un CREATE DATABASE, desde Genexus en una base de datos vacía en mi versión local del SQL Server 2005 Express, que sirva como testigo.
4) Crear una base vacía con la estructura de la base de datos de producción, a traves de la generación de scripts que provee SQL server.
3) Comparar las estructuras de la base de datos generada con GeneXus y la base de datos de producción. Para esto encontré el utilitario xSQL Object (Lite Edition).
Este utilitario, es gratis para SQL Server 2005 Express y para lo que yo quería hacer, vino de maravillas. Permite comparar las estructuras de las base de datos, genera los script para sincronizar las mismas.
Tiene algunas cosas adicionales importantes, que no encontré en otros comparadores. Permite comparar COLLATIONS, ANSI_NULLS, FILLFACTOR, PAD_INDEX y mayúsculas y minúsculas. También permite des habilitar dichos chequeos.
Tambien puede comparar indices, constraints, triggers y demas objetos tanto para Sqlserver 2000 y SQLServer 2005.
Me resultó una herramienta muy práctica y que me ahorró muchas horas de trabajo.
Muy recomendable.
Junto con la instalación, viene también un utilitario para la sincronizacion de datos, al cual se le dan tablas y realiza la sincronizacion de los datos en las mismas. A mi ésta no me funcionó tan bien, porque tenia diferencias en la collation de las base de datos que estaba utilizando y no puede comparar en ese escenario.
También esta la opción de ejecutar desde línea de comandos para automatizar chequeos que se quieran hacer en la estructura de la base de datos, por ejemplo en builds nocturnos automatizados.
Muy buen post Enrique, gracias por compartirlo con todos nosotros.
ResponderBorrarAluziner:
ResponderBorrarMe alegro que te sirviera el post.
Vi en tu blog que tambien habias usado el backup de blogger.
Si todos colaboramos con nuestros hallazgos, nuestra vida va a ser mas facil y seremos mas productivos.
Saludos,
Enrique