domingo, 11 de diciembre de 2011

Análisis de dos bases de datos

 

Antecedentes

Se cuenta con dos bases que comparten estructuras comunes (Tablas, Stored procedures, triggers, etc). ambas bases de datos son utilizadas por la misma aplicación solo que en versiones distintas, de allí su diferencia. Se requiere analizar ambas bases de datos para poder sacar una relación de sus diferencias y realizar un empate de alguna de las estructuras.

 

Solución

Se desarrolló un Stored procedure que realiza un análisis desplegando dos conjuntos de resultados.

  1. Relación de estructuras con los siguientes atributos
    1. Contador: Identificador auto numérico de la tabla
    2. Tabla : Nombre del objeto de base de datos
    3. Esta en origen: Bandera señala si el objeto esta en la base de datos origen
    4. Esta en destino: Bandera señala si el objeto esta en la base de datos destino
    5. Cantidad de campos idéntica: La cantidad de atributos en ambos objetos es idéntica
    6. Calidad de campos idéntica: La calidad (Longitud, tipo de dato, manejo de nulos, idioma o COLLATE) de atributos en ambos objetos es idéntica
    7. Susceptible a analizar: Bandera que indica que la estructura u objeto origen difiere de su homóloga en la base de datos destino
  2. Detalle de las inconsistencias
    1. Tabla: Nombre de la tabla u objeto involucrada
    2. Orden: Identificador auto numérico de la tabla
    3. ColOrigen: Nombre de la columna o campo en la base de datos origen
    4. ColDestino: Nombre de la columna o campo en la base de datos destino
    5. Longitud distinta: La longitud del campo difiere de una base de datos a otra
    6. Null distinto: El manejo de nulos del campo difiere de una base de datos a otra
    7. Collate distinto: El idioma o COLLATE del campo difiere de una base de datos a otra
    8. Tipo de dato distinto: El tipo de dato del campo difiere de una base de datos a otra
    9. Campo no está en origen: El campo o atributo no esta en la base de datos origen
    10. Campo no esta en destino: El campo o atributo no esta en la base de datos destino

A continuación se anexa un ejemplo de ejecución:

image

Tanto el filtro como el tipo de objeto son campos que se pueden omitir. El primero dándole el valor de ‘%%’, el segundo simplemente dejando el valor vacío ‘’