Download DesBitTransferData1.0

Document related concepts

Microsoft SQL Server wikipedia , lookup

Transcript
Bit Sistemas
Proyecto: BitTransferData
Actividad: Doc. Técnica
Versión: 1.0
Autor: Pablo Villa / Rol: Gerencia de Desarrollo
09/08/17
Transferencia de datos
Exportación y Eliminación de datos
Archivo: D:\81948273.doc
Página 1 de 8
Bit Sistemas
Proyecto: BitTransferData
Actividad: Doc. Técnica
Versión: 1.0
Autor: Pablo Villa / Rol: Gerencia de Desarrollo
09/08/17
Objetivo
Los objetivos de este programa son:
transferir datos de una base de datos Origen a otra base de datos
Destino de forma rápida
eliminar datos de una base de datos
ver las tablas de las cuales depende una tabla
Este programa es una herramienta para los consultores, que deben utilizar
para realizar transferencias de datos cuando se hacen liberaciones del sistema y la
base de datos ha sido modificada estructuralmente (modificaciones de tablas y/o
relaciones).
Integridad referencial
Debido a las relaciones de integridad referencial de las bases de datos,
transferir o eliminar datos es una tarea que requiere cuidado.
La Transferencia de datos de una base de datos Origen a otra base de datos
Destino debe hacerse transfiriendo primero las tablas que no dependen de ninguna
tabla, luego las que dependen de las primeras y así sucesivamente.
La eliminación de datos, debe hacerse exactamente en el orden inverso.
Si los datos a transferir de la base de datos Origen no son compatibles con
las relaciones definidas en la base de datos Destino ocurrirá un error de integridad.
Para evitar este inconveniente, es necesario ejecutar el programa
VerifyIntegrity entre ambas bases de datos, solucionar las posibles inconsistencias
y luego ejecutar BitTransferData.
Por ejemplo:
Tabla: arbranch
Depende de:
glacct
glcc
ivlocation
Tabla: glacct
Depende de: ninguna
Tabla: glcc
Depende de: ninguna
Tabla: ivlocation
Depende de:
glacct
glcc
Para transferir arbranch, primero hay que transferir glacct, glcc e ivlocation.
Archivo: D:\81948273.doc
Página 2 de 8
Bit Sistemas
Proyecto: BitTransferData
Actividad: Doc. Técnica
Versión: 1.0
Autor: Pablo Villa / Rol: Gerencia de Desarrollo
09/08/17
Diseño de relaciones de la base de datos
Actualmente, nuestra base de datos BitData no contiene todas las relaciones
entre las tablas que existen en teoría.
Para manejar la información de las relaciones entre las tablas de BitData se
han agregado dos tablas: GoTableRelationLevel y GoTableRelationLevelDet.
Nota: Estas tablas se mantienen manualmente por el grupo de Desarrollo.
GoTableRelationLevel: Contiene la información del nivel en el esquema de
relaciones de cada tabla de la base de datos.
Campos:
TableId: nombre de tabla
TableLevel: nivel de la tabla en el esquema de relaciones, el nivel de
las tablas madre es 1
GoTableRelationLevelDet: Contiene la información: para una tabla, las tablas de las
que depende.
Campos:
TableId: nombre de tabla
DetailId: numero de detalle
RelatedTable: nombre de tabla tal que TableId depende de
RelatedTableId
Ejemplo:
GoTableRelationLevel
TableId
tableLevel
Arbranch
3
GoTableRelationLevelDet
tableId
detailId
relatedTable
arbranch
1 glacct Id
arbranch
2 glcc
arbranch
3 ivlocation
Archivo: D:\81948273.doc
Página 3 de 8
Bit Sistemas
Proyecto: BitTransferData
Actividad: Doc. Técnica
Versión: 1.0
Autor: Pablo Villa / Rol: Gerencia de Desarrollo
09/08/17
Funcionamiento del programa
Interfaz de Usuario
Datos Origen: String de conexión a la base de datos Origen.
Datos Destino: String de conexión a la base de datos Destino.
Combo Grupo de tablas: Grupo de tablas (de la base Origen) que se van a cargar
en la lista Tablas a Transferir.
El grupo de tablas debe estar ordenado según el nivel de cada tabla.
Por defecto se utiliza el grupo BitTransferData que contiene todas las tablas
de la base de datos bien ordenadas.
Lista Tablas a Transferir: Lista de tablas ordenadas por numero de línea
(goTableGroup.detail_id) del grupo de tablas definido en el combo Grupo de tablas.
Archivo: D:\81948273.doc
Página 4 de 8
Bit Sistemas
Proyecto: BitTransferData
Actividad: Doc. Técnica
Versión: 1.0
Autor: Pablo Villa / Rol: Gerencia de Desarrollo
09/08/17
Lista Tablas fuera del grupo: Lista de tablas que pertenecen a la base de datos
Origen pero no están incluidas en el grupo de tablas seleccionado.
Botón Borrar: Elimina los datos de las tablas que han sido marcadas en la lista
Tablas a Transferir y en la lista Tablas fuera del grupo de la base de datos
Destino.
Antes de eliminar los datos solicita confirmación del usuario.
Botón Transferir: Transfiere los datos de las tablas que han sido marcadas en la
lista Tablas a Transferir y en la lista Tablas fuera del grupo de la base de
datos Origen a la base de datos Destino.
Botón Dependencias: Mediante doble click sobre la lista de tablas a transferir o
presionando el botón Dependencias, se invoca al formulario de
Dependencias.
Dependencias : Interfaz de usuario
Utilidad
Para la tabla seleccionada en el combo Tablas, muestra un árbol que
representa jerárquicamente las tablas de las cuales depende.
Se muestra también una lista de todas las tablas de las que depende la tabla
seleccionada.
Cada vez que se selecciona una tabla, se cargan el árbol y la lista sin
eliminar el contenido anterior, de tal manera que es posible ver las dependencias
de varias tablas a la vez.
Archivo: D:\81948273.doc
Página 5 de 8
Bit Sistemas
Actividad: Doc. Técnica
Versión: 1.0
Autor: Pablo Villa / Rol: Gerencia de Desarrollo
09/08/17
Proyecto: BitTransferData
Modificaciones sobre BitData 4.10
-
-
Nuevas tablas goTableRelationLevel y goTableRelationLevelDet, ambas cargadas
con los registros de las tablas correspondientes al momento de generación del
programa.
Se agregaron los registros correspondientes al grupo BitTransferData en la tabla
goTableGroup.
Se genero un script que crea las tablas nuevas para bases de datos SQL Server.
\Bitwin\SQL SERVER\Scripts 1.0\goTableRelationLevel.log
Componentes del programa
Bit Sistemas
SrvConnection.dll 1.3
Grales.dll 3.61
Bitobj.dll 3.75
Microsoft
ADOX: Msadox.dll 2.6
ADO: Msado15.dll 2.6
Base de datos:
Bitdata 4.10.
Testing
Casos de uso a tener en cuenta durante la fase de testing.
-
Base Origen: Access y Base Destino Access.
Base Origen: SQL Server y Base Destino Access.
Base Origen: Access y Base Destino SQL Server.
Base Origen: SQL Server y Base SQL Server.
Base Origen con datos no compatibles con las relaciones de la base destino.
Performance: La transferencia de BitData Demo dura aproximadamente 7
minutos.
Próxima versión
-
al seleccionar una tabla en la lista de tablas a transferir:
verifica si las tablas de las que depende la tabla seleccionada han sido
seleccionadas, en caso negativo, presenta un form con una lista que muestra
las tablas relacionadas y permite marcarlas
-
estudiar aplicación a otras bases de datos (bitconfig por ejemplo, filters, etc.)
poder seleccionar varias tablas de la lista de tablas a transferir y al presionar el
botón Dependencias que cargue las dependencias de todas las seleccionadas
Archivo: D:\81948273.doc
Página 6 de 8
Bit Sistemas
Proyecto: BitTransferData
Actividad: Doc. Técnica
Versión: 1.0
Autor: Pablo Villa / Rol: Gerencia de Desarrollo
09/08/17
Consultas utilizadas
La carga de las tablas goTableGroup, goTableRelationLevel y goTableRelationLevel
fue un proceso manual complejo.
Para esto, se utilizaron algunas consultas que dejo documentadas aquí para su
futuro uso.
Consulta: _TablasSinPrevias
Utilidad: Muestra las tablas de primer nivel, o sea, las que no tienen tablas de las
que depende. Estas tablas deben tener asignado nivel 1 en la tabla
goTableRelationLevel.
SQL:
SELECT goTableRelationLevel.tableId
FROM goTableRelationLevel LEFT JOIN goTableRelationLevelDet ON
goTableRelationLevel.tableId = goTableRelationLevelDet.tableId
WHERE (((goTableRelationLevelDet.tableId) Is Null));
Consulta: _MaxLevelRelated
Utilidad: Para las tablas que tienen dependencias, muestra el máximo nivel de las
tablas de las que depende.
SQL:
SELECT goTableRelationLevelDet.tableId,
Max(goTableRelationLevel.tableLevel) AS MáxDetableLevel
FROM goTableRelationLevel INNER JOIN goTableRelationLevelDet ON
goTableRelationLevel.tableId = goTableRelationLevelDet.relatedTableId
GROUP BY goTableRelationLevelDet.tableId;
Consulta: _TablasNivelError
Utilidad: Muestra las listas tal que el nivel definido en la tabla goTableRelationLevel
es incorrecto. El nivel de una tabla debe ser: el nivel máximo de sus tablas
relacionadas + 1
SQL:
SELECT [_MaxLevelRelated].tableId, [_MaxLevelRelated].MáxDetableLevel,
goTableRelationLevel.tableLevel, [_MaxLevelRelated]![MáxDetableLevel]+1
= [goTableRelationLevel]![tableLevel] AS Expr1 FROM _MaxLevelRelated
INNER JOIN goTableRelationLevel ON [_MaxLevelRelated].tableId =
goTableRelationLevel.tableId WHERE
((([_MaxLevelRelated]![MáxDetableLevel]+1 =
[goTableRelationLevel]![tableLevel])=False)) ORDER BY
[_MaxLevelRelated].tableId;
Consulta: _BitTransferDataGroup
Utilidad: Una vez que las tablas goTableRelationLevel y goTableRelationLevel
contienen los datos correctos, se ejecuta esta consulta para copiar y pegar
los registros del grupo BitTransferData en la tabla goTableGroup.
SQL:
SELECT "BitTransferData" AS Expr1, goTableRelationLevel.tableId, "" AS
Expr2, True AS Expr3, False AS Expr4, goTableRelationLevel.tableLevel
FROM goTableRelationLevel;
Archivo: D:\81948273.doc
Página 7 de 8
Bit Sistemas
Proyecto: BitTransferData
Actividad: Doc. Técnica
Versión: 1.0
Autor: Pablo Villa / Rol: Gerencia de Desarrollo
09/08/17
Consulta: _DependenciasRepetidas
Utilidad: Muestra las tablas para las cuales se han definido dependencias repetidas.
SQL:
SELECT goTableRelationLevelDet.tableId,
goTableRelationLevelDet.relatedTableId,
Count(goTableRelationLevelDet.relatedTableId) AS CuentaDerelatedTableId
FROM goTableRelationLevelDet
GROUP BY goTableRelationLevelDet.tableId,
goTableRelationLevelDet.relatedTableId;
Archivo: D:\81948273.doc
Página 8 de 8