12 de abril de 2003

Manejo de datos con Microsoft Visual FoxPro y MSDE

Por Por José G. Samper C.

download Descargue el código fuente (142 Kb).
Cuando se esta pensando en desarrollar una aplicación, uno de los puntos importantes a tomar en cuenta es. ¿Cuál va a ser nuestro motor de base de datos?.

En este punto es importante destacar que Microsoft Data Engine (MSDE), puede ser una buena opción a tomar en cuenta.
Ustedes se preguntaran. ¿Qué es Microsoft Data Engine (MSDE)?.

Microsoft Data Engine (MSDE) es un motor de base de datos basado en Microsoft SQL Server, el cual posee las siguientes características:
  • El licenciamiento es gratuito.
  • No tiene aplicación de administración.
  • Soporta hasta 2 GB de datos.
  • Se accede igual que SQL Server.
Al momento de decidir que motor de base de datos vamos a usar en nuestra aplicación es importante tomar en cuenta las siguientes consideraciones:
Cuándo usar Microsoft Visual FoxPro:
  • Cundo seguridad no es una prioridad.
Cuándo usar MSDE:
  • Se quiere un motor más confiable que Microsoft Visual FoxPro sin pagar licenciamiento adicional.
  • Se estudie la posibilidad de construir aplicaciones escalables.
  • Cuando se desarrolle una aplicación que necesite replicación.
  • Para desarrollar aplicaciones localmente sin necesidad de instalar SQL Server durante el desarrollo.
Cuándo usar Microsoft SQL Server:
  • Aplicaciones de misión crítica.
  • Seguridad es un aspecto clave.
  • Manejo de grandes volúmenes de datos.
Los requerimientos necesarios para la instalación de Microsoft Data Engine (MSDE) son:
  • Sistema Operativo Windows 98 o superior.
  • Explorer 5.00 o superior
  • 64 Mb de Memoria Ram mínimo (Recomendable 128 Mb o Superior).
  • 44 Mb en Disco Duro.
Migración de datos

Empezaremos por explicar el Asistente de Microsoft Visual FoxPro, el Asistente de migración Microsoft® Visual FoxPro® es un aplicativo que ejecuta la migración de objetos de una base de datos Fox a una base de datos MSDE o SQL Server. Este asistente migra las tablas, relaciones, reglas, validaciones y si lo desea también se pueden migrar los datos.

Los pasos a seguir para realizar la migración son los siguientes:

Paso 1 - Seleccionar la base de datos local.

En este paso se selecciona la base de datos Fox a ser migrada.



Paso 2 - Seleccionar el origen de datos.

En este paso seleccionas el ODBC o conexión con la cual se va a realizar la migración.



Paso 3 - Elegir las tablas.

En este paso se seleccionan todas las tablas que se van a migrar.



Paso 4 - Asignar los tipos de datos de campos.

En este paso se define la estructura de la tabla en el Servidor MSDE, en este paso es importante destacar lo siguiente:
  • Para aquellas aplicaciones que necesitan replicación se debe marcar la casilla de Identity Column para todas las tablas, esto crea un campo de identificación única de registro necesaria para la replicación.
  • Si se desea mantener un control de cuando fue modificado un registro, se debe marcar la casilla de timestamp column para aquellas tablas en las que se desee llevar dicho control.
  • También es importante el controlar los tipos de datos, se debe realizar un análisis previo de cual es el mejor tipo de datos a utilizar en MSDE. Ej: Analizar que es mejor usar para un campo tipo fecha si datetime o smalldatetime.


Paso 5 - Seleccionar la base de datos de destino.

En este paso se define cual va a ser la base de datos destino en MSDE, se puede elegir entre crear una nueva base de datos o actualizar una ya existente.



Paso 8 - Definir las opciones de upsizing.

En este paso se define que se desea migrar, cambiar y crear. Se pueden migrar los índices, valores por defecto, relaciones, solo la estructura y los procedimientos almacenados. Se pueden cambiar las vistas locales a remotas o se pueden crear nuevas vistas remotas a partir de las tablas migradas. En este paso es importante destacar lo siguiente:
  • Si se van a migrar las reglas de validación, es importante tomar en cuenta que algunos comandos de fox no son compatibles con MSDE, por consiguiente es recomendable corregir estos detalles en la tabla fox antes de realizar la migración. Ej: En MSDE no existe la instrucción EMPTY(), esta validación debe ser corregida.
  • Si se van a migrar los datos, se debe tomar en cuenta que de existir algún comando no reconocido en las reglas de validación la data no será migrada satisfactoriamente.


Paso 9 - Finalizar.

Ejecuta la upsizing a MSDE.

También puede usar para migrar sus datos el aplicativo Data Transformation Services (DTS), el cual te permite la migración desde Microsoft Visual FoxPro a Microsoft SQL Server, para poder ejecutar esta aplicación debe tener instalado Microsoft SQL Server. Con esta aplicación se puede migrar la data y la estructura, no se migran las reglas, validaciones y store procedures.

Por ultimo puedes crear programas de migración propios. Por experiencias previas le recomendamos que migre la estructura de la base de datos con todos sus índices, validaciones, valores por defecto y procedimientos almacenados, mediante el asistente de migración y luego se migran los datos mediante el DTS.

Acceso de datos

Podemos acceder a ellos mediante vistas remotas, instrucciones de paso SQL (SQL Pass Through) o ADO.

Empezaremos por las vistas remotas, las vistas remotas son querys actualizables ejecutados sobre una fuente ODBC, los cuales son almacenados en la base de datos. Sus características son:
  • Se utilizan de igual manera que una tabla.
  • El buffering es Optimista.
  • Pueden ser Parametrizables
    • Estáticas
    • Dinámicas; Si no se dan los parámetros a tiempo de ejecución son solicitados por Microsoft Visual FoxPro. Ejemplo:
lcCodigo = "1"
USE VistaClientes
(SELECT * FROM Clientes WHERE cl_Codigo = ?lcCodigo)
  • Se pueden configurar propiedades de los campos.
Consideraciones a tomar en cuenta cuando se utiliza una vista:
  • Compartir Conexión, unos de los aspectos más críticos cuando se trabaja con MSDE son las conexiones por consiguiente al diseñar la aplicación le sugerimos los siguiente:
    • Establecer una sola conexión a la BD.
    • No hacer querys en paralelo sobre la misma conexión.
    • Configurar que se traiga todos los datos necesarios.
    • Cuidar la cantidad registros a traer.
    • Utilizar Propiedad NoDataOnLoad = .T. en el DataEnvironment.
    • Hacer REQUERY de la vista en el momento de necesitar la data.
  • Los índices sólo deben ser creados por razones de ordenamiento y búsqueda local, como las vistas son manejadas como una tabla permite la creación de índices sobre dichas vistas, al trabajar con índices sobre vistas le sugerimos lo siguiente:
    • Cada vez que se haga REQUERY() el índice debe ser eliminado y recreado.
    • Se debe ser muy cuidadoso con el uso de índices.
  • Manejo de transacciones en el Servidor, cuando se trabaja con transacciones, se debe tener en cuenta que se esta trabajando en cliente/servidor por consiguiente si abrimos transacciones en Microsoft Visual FoxPro estas no aplican al servidor MSDE, por lo cual le sugerimos los siguiente:
    • No usar BEGIN TRANSACTION (Manejo Fox).
    • Pasar a control manual de transacciones en el servidor.
    • Si se van a utilizar varias vistas, utilizar una sola conexión.
    • La transacción se abre con el primer TABLEUPDATE().
    • SQLCOMMIT() y SQLROLLBACK() para cerrar.
  • Evitar traer campos memo, es importante por razones de rendimiento el evitar traer en la vista los campos Memo, con esto no queremos decir que no se incluyen en la vista, si no, que se configure la vista para que traiga el contenido del campo memo cuando se solicite la información de dicho campo.
Para crear una vista remota puede usar el asistente de vistas remotas de Microsoft Visual FoxPro o mediante código.

Las instrucciones de paso SQL (SQL Pass Through), son funciones que permiten la ejecución de instrucciones SQL directamente en el servidor, las instrucciones de paso SQL son ideales para la ejecución de procesos del lado del servidor. Sus características son:
  • Se utiliza sintaxis propia del servidor.
  • Ejecutar consultas solo lectura.
  • Ejecutar procedimientos almacenados.
  • Ejecutar rutinas de mantenimiento.
  • Ejecutar Queries complejos con o sin actualización.
  • Se pueden ejecutar varios comandos sobre el servidor simultáneamente.
Consideraciones a tomar en cuenta cuando se utilizan las instrucciones de paso SQL (SQL Pass Through):
  • Compartir Conexión, igual que en las vistas se recomienda el uso de las conexiones compartidas, podemos reutilizar la conexión de las vistas abiertas con la función CURSORGETPROP( "ConnectHandle").
  • Al compartir conexiones con las vistas remotas, se debe tener cuidado al ejecutar la instrucción SQLDISCONNECT(), ya que involuntariamente podemos cerrar la conexión existente entra la base de datos y las vistas remotas.
Por ultimo explicaremos el método de acceso mediante Microsoft ActiveX Data Objects (ADO), Microsoft ActiveX Data Objects (ADO) es el método de acceso a datos adoptado por Microsoft desde 1.998, le permite acceso a un servidor de bases de datos y tratar los datos a través de un proveedor de OLE DB. Sus características son:
  • Se maneja mediante un modelo de objetos (Objeto Conecction, Objeto Command, Objeto Recorset, Objeto Record y Objeto Stream).
  • Ideal para la elaboración de componentes y aplicaciones Web.
  • Facilidad de uso.
  • Un bajo consumo de Memoria.
  • Soporta operaciones sincrónicas y operaciones asincrónicas (Operación sincrónica: Es aquella que al iniciarse tiene que finalizar, para poder continuar con la siguiente. Operación asincrónica: Es aquella que al iniciarse para el control al programa que la llame sin esperar a que finalice y continúa la ejecución del programa.
  • Soporta varios tipos de cursores (Cursor dinámico, Cursor de conjunto de claves, Cursor estático, Cursor de desplazamiento sólo hacia delante).
Consideraciones a tomar en cuenta cuando se utilizan Microsoft ActiveX Data Objects (ADO):
  • Al no ser un objeto natural de Microsoft Visual FoxPro, no se pueden utilizar las conexiones Fox.
  • El manejo de transacciones debe ser mediante el objeto ADO.
  • Para el manejo de datos en forma natural de Fox, puede usar la librería pública VFPCOM.dll, que permite la transformación de un cursor ADO a un cursor Fox.
  • Para ejecutar transacciones entre distintos de componentes se recomienda utilizar COM+.
Conclusión

Microsoft Data Engine (MSDE) es un excelente motor de base de datos, que le permite la elaboración de una aplicación Cliente/Servidor robusta y a bajo costo. Así mismo le permite una fácil escalabilidad a Microsoft SQL Server sin muchos cambios a su aplicación.


José G. Samper C., Caracas, Venezuela, es Analista Programador,Microsoft Most Valuable Profesional en Visual Fox Pro. Dedicado al desarrollo de sistemas desde el año 1991; siempre en Fox o en Visual Fox Pro. Actualmente especializándose en C# y Jefe de Proyectos Especiales en Softech Consultores, C.A.

1 comentario :

  1. Estimado José G, quisiera contactarte para un trabajo de migracion, se rata de una aplicacion de escritorio desarrollada bajo VFP que quiero migrar a que trabaje con DB MS SQL Server...favor contactame
    o comentame como nos podemos contactar...agradezco tu respuesta solifactinsas@gmail.com

    ResponderBorrar

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.