Manual de errores y soluciones © Gedisweb versión 3, Abril de 2012 1 Errores de conexión a la base de datos Estos errores se pueden dan cuando tras una instalación correcta o tras un período de ejecución sin problemas, dan sucesivos errores informando de que no se puede conectar a la base de datos y aparece siempre la misma ventana de error no pudiendo entrar a la aplicación Gedisweb. Chequear lo siguiente: 1) [PARA FIREBIRD/MYSQL/SQLSERVER] Lo primero que hay que comprobar es lo más obvio. ¿Son correctos los cuatro parámetros, es decir, el nombre del servidor o host, el nombre o path de la base de datos, el nombre de usuario y su contraseña? Si estamos en FIREBIRD el nombre de usuario será por defecto SYSDBA (en mayúsculas) y la contraseña masterkey (en minúsculas). Si estamos en SQLSERVER el nombre de usuario será por defecto sa (en minúsculas) y la contraseña masterkey (en minúsculas). 2) [PARA FIREBIRD] Si todo lo anterior es correcto, ¿Existe el fichero de la base de datos? Para comprobarlo tendremos que saber cómo buscar el fichero. La base de datos es de la forma nombre_de_maquina : path del fichero de la base de datos. En el ejemplo la máquina se llama localhost y la base de datos es c:\bases_datos\aplicacion.gdb. Si la máquina se llama localhost o 127.0.0.1 quiere decir que estamos en el ordenador que tiene la base de datos, luego el path del fichero de la base de datos se refiere a una carpeta local. Si la máquina tiene otro nombre, por ejemplo SERVIDOR deberíamos comprobar que la máquina en la que estamos se llama igual. Si se llama igual estamos en el caso anterior. Si no se llama igual, debemos localizar el fichero de la base de datos en la máquina de nuestra red que se llame SERVIDOR. 3) [PARA SQLSERVER] ¿Se instaló la aplicación como una instancia de SQLSERVER?. Debemos tener en cuenta que un mismo servidor puede tener hasta 16 instancias de SQLSERVER. Esto se puede ver haciendo doble click sobre el icono de SQLSERVER en el área de notificación de Windows y, tras la visualización de la ventana del administrador de servicios de SQLSERVER, abrir el desplegable servidor. Lo normal es que aparezca el nombre del servidor pero puede aparecer también el nombre del servidor seguido de una barra (\) y un nombre de instancia. Si es así, lo normal es que el nombre de instancia sea igual al nombre de la aplicación. Debemos seleccionar en el desplegable esa instancia y comprobar que está funcionando. En nuestra aplicación deberemos poner en el campo Servidor, el nombre del servidor seguido de la barra (\) y su nombre de instancia. Manual de errores y soluciones, página 1 4) [PARA FIREBIRD] ¿Hay conexión a la red? Si no es así pero estamos seguros que el ordenador es el que tiene la base de datos con lo cual en teoría no necesita la red para salir al exterior y estamos en windows XP consultar el apartado que hay más adelante titulado Solucionar el retraso de cierre de las bases de datos Firebird en Windows XP, en la causa/solución 2. 5) [PARA FIREBIRD/MYSQL/SQLSERVER] ¿Tenemos Windows XP service pack 2, windows Vista o windows 7? Si es así, tenemos que saber que instala un cortafuegos automáticamente que bloquea entre otros a la aplicación Gedisweb ya que la conexión que hace a la base de datos es vía TCP/IP luego el cortafuegos estará bloqueando la conexión porque la considerará un acceso a internet no permitido o peligroso. Hay que configurar el cortafuegos de Windows para permitir el acceso a Internet (aunque sea local ya que el cortafuegos lo trata igual) a la aplicación Gedisweb y también, si tenemos Firebird, al servidor de la base de datos c:\archivos de programa\Firebird\Firebird_1_5\bin\fbserver.exe y si tenemos SQLServer, al servidor de esta base de datos situado normalmente en C:\Archivos de programa\Microsoft SQL Server\MSSQL\Binn\sqlservr.exe para la instancia predeterminada o en C:\Archivos de programa\Microsoft SQL Server\MSSQL$nombreinstancia\Binn para las instancias desde la 1 hasta la 15 donde nombreinstancia es la instancia que instala la aplicación Gedisweb. 5) [PARA FIREBIRD/MYSQL/SQLSERVER] ¿Se ha instalado algún antivirus como Panda o Norton Security o algo parecido? Si es así, estos paquetes traen un pequeño cortafuegos que es posible que esté bloqueando tanto a la aplicación Gedisweb como a Firebird, SqlServer o MySql si es el caso. Hay que hacer lo mismo que en el punto anterior. 6) [PARA FIREBIRD] ¿Se ha instalado algún pack de adsl? Según que packs sobreescriben cierta DLL del sistema (no sabemos cual) que provoca que la base de datos (Firebird) no funcione correctamente y no arranque. Habrá que reinstalar pero haciendo copia de los datos y restaurándolos después si también tenemos que reinstalar el servidor. 7) [PARA FIREBIRD/SQLSERVER] ¿Se ha utilizado algún punto de restauración en Windows para volverlo a un estado estable? Esto realmente pasa cuando se ha instalado algo (como un pack de adsl) que deja el sistema mal pero que se no llega a restaurar completamente. Habrá que reinstalar pero haciendo copia de los datos y restaurándolos después si también tenemos que reinstalar el servidor. 8) [PARA FIREBIRD] Observar si Firebird está funcionando y no tiene errores. Para ello hay que ver si el servicio está funcionando. 9) [PARA FIREBIRD/MYSQL/SQLSERVER] Restaurar las librerías de acceso a datos por si se hubieran sobreescrito o corrompido. Estas librerías son dbexpint.dll, dbexpmda.dll y dbexpmss.dll. Para ello lo mejor es entrar a la página de Gedisweb, www.gedisweb.es sección descargas, apartado Comunes y bajarse las Dlls y ficheros adicionales a la instalación que es un fichero zip que habrá que descomprimir sobre la carpeta donde esté el ejecutable de la aplicación que por defecto estará situada en C:\Archivos de programa\<nombre empresa distribuidor>\<nombre aplicación>. El icono de acceso directo que se use para ejecutar la aplicación debe además tener configurado en el campo Iniciar en la misma carpeta donde está el ejecutable para que el primer sitio donde busque el sistema sea en esa carpeta y no en alguna otra que puede tener otra versión distinta de las dlls. 10) [PARA FIREBIRD/MYSQL/SQLSERVER] Restaurar la librería midas.dll. En este caso el sistema también debería dar el error Cannot load midas.dll. Esta librería es necesaria como interfaz entre DELPHI (el lenguaje en el que está programada la aplicación) y las librerías de acceso a la base de datos. Lo primero que haremos es comprobar si existe la librería que se situará en la carpeta system de Windows (Normalmente C:\Windows\System para win98, C:\Winnt\System32 para windows 2000, C:\Windows\System32 para windows ME y XP). Si no existiera, entraremos a la página de Gedisweb, www.gedisweb.es sección descargas, apartado Comunes y bajarse midas.dll que es un fichero zip que habrá que descomprimir sobre la carpeta system del Windows que tengamos. Una vez hecho esto habrá que comprobar que la librería se autoregistra correctamente. Para ello borraremos del registro las claves descritas en el apartado Problemas con la librería midas.dll descrito más adelante en este mismo documento y volveríamos a ejecutar la aplicación. Manual de errores y soluciones, página 2 11) [PARA FIREBIRD] Comprobar la librería GDS32.DLL. Esta librería también se sitúa en la carpeta system de Windows y la debería haber instalado FIREBIRD ya que pertenece a él. En este caso, podemos entrar en la página de Gedisweb, www.gedisweb.es sección descargas, apartado Comunes y bajarse gds32.dll que es un fichero zip que habrá que descomprimir sobre la carpeta system del Windows que tengamos. Si tras todas estas comprobaciones seguimos sin tener éxito en la conexión no tendremos más remedio que desinstalar la aplicación Gedisweb y volverla a instalar haciendo previa copia de los datos si es que estamos reinstalando el ordenador que hace de servidor. Si aún así, seguimos sin conectar, lo mejor es contactar con Gedisweb en busca de una posible solución. Manual de errores y soluciones, página 3 2 Errores del tipo Database error: invalid request BLR at offset XX function XXXXXXX is not defined module name or entrypoint could not be found Este es un error que se produce cuando no tenemos las funciones UDF específicas de Gedisweb instaladas en nuestro sistema o bien disponemos de una UDF más antigua. Las funciones UDF se describen en el manual de mantenimiento de bases de datos. Nosotros básicamente debemos copiar o restaurar el fichero gwUDF.dll en la carpeta UDF del directorio root de FIREBIRD. Si se ha instalado respetando las carpetas propuestas por defecto, sería la carpeta C:\Archivos de programa\Firebird\Firebird_1_5\UDF. Entraremos en la página de Gedisweb (www.gedisweb.es), sección descargas, apartado comunes y nos bajaremos Descarga funciones UDF. Es un zip autodescomprimible que propone la carpeta C:\Archivos de programa\Firebird\Firebird_1_5\UDF (la carpeta por defecto del servidor de FIREBIRD, si fuera un servidor INTERBASE habría que cambiar a la carpeta C:\Archivos de programa\Borland\Interbase\UDF) y sobreescribe el fichero gwUDF.dll que haya en esa carpeta. Sólo hay que instalarla en el servidor. Manual de errores y soluciones, página 4 3 Problemas con la librería midas.dll En este caso la aplicación da el error Cannot load midas.dll o, simplemente, da el mensaje de que no se puede conectar a la base de datos. Como hemos dicho en manuales anteriores, la librería midas.dll se autoregistra en la primera ejecución de la aplicación Gedisweb. Este registro implica que se graba también el path donde esté el fichero de dicha librería con lo que resulta recomendable instalarlo siempre en una de las carpetas comunes del sistema Windows como la carpeta system32 que es lo más correcto. Entraremos en la página web de Gedisweb (www.gedisweb.es) sección descargas, apartado comunes y nos bajaremos midas.dll que es un fichero zip que descomprimiremos en la carpeta system32 de Windows (Normalmente C:\Windows\System para win98, C:\Winnt\System32 para windows 2000, C:\Windows\System32 para windows ME y XP). Seguidamente entraremos en el registro y borraremos todas las entradas que hubiera (enumeradas más abajo) que hagan referencia a dicha librería. Ejecutar entonces de nuevo la aplicación Gedisweb. Ésta llamará a midas.dll la cual se autoregistrará de nuevo ya con la ubicación correcta. AVISO IMPORTANTE: Debemos asegurarnos que no hay otra aplicación que tengamos instalada anteriormente en nuestro sistema que pueda usar dicha librería ya que probablemente aquélla deje de funcionar. En esos casos buscar en el disco duro posibles ficheros midas.dll y renombrarlos antes de probar. Si funciona la aplicación Gedisweb intentar ejecutar la otra aplicación que usa midas.dll. Si no funcionara, renombrar el fichero midas.dll que hemos copiado nosotros, volver a renombrar el fichero midas.dll que encontramos en nuestro sistema al nombre original, borrar las ramas del registro enumeradas abajo y volver a ejecutar la aplicación antigua para que quede todo como estaba antes. Es recomendable consultar con Gedisweb para ver una posible solución. Los valores del registro que hay que borrar son los siguientes: 1) De las siguientes, borrar la rama del registro que se visualiza en la izquierda: HKEY_CLASSES_ROOT\Borland.Midas_DatapacketRead.1 HKEY_CLASSES_ROOT\Borland.Midas_DatapacketWrite.1 HKEY_CLASSES_ROOT\Borland.Midas_DSBase HKEY_CLASSES_ROOT\Borland.Midas_DSBase.1 HKEY_CLASSES_ROOT\Borland.Midas_DSCursor HKEY_CLASSES_ROOT\Borland.Midas_DSCursor.1 HKEY_CLASSES_ROOT\CLSID\{9E8D2FA1-591C-11D0-BF52-0020AF32BD64} HKEY_CLASSES_ROOT\CLSID\{9E8D2FA3-591C-11D0-BF52-0020AF32BD64} HKEY_CLASSES_ROOT\CLSID\{9E8D2FA5-591C-11D0-BF52-0020AF32BD64} HKEY_CLASSES_ROOT\CLSID\{9E8D2FA7-591C-11D0-BF52-0020AF32BD64} HKEY_CLASSES_ROOT\TypeLib\{83F57D68-CA9A-11D2-9088-00C04FA35CFA} HKEY_LOCAL_MACHINE\Software\Classes\Borland.Midas_DatapacketRead.1 HKEY_LOCAL_MACHINE\Software\Classes\Borland.Midas_DatapacketWrite.1 HKEY_LOCAL_MACHINE\Software\Classes\Borland.Midas_DSBase HKEY_LOCAL_MACHINE\Software\Classes\Borland.Midas_DSBase.1 HKEY_LOCAL_MACHINE\Software\Classes\Borland.Midas_DSCursor HKEY_LOCAL_MACHINE\Software\Classes\Borland.Midas_DSCursor.1 HKEY_LOCAL_MACHINE\Software\Classes\CLSID\[clsid] HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{9E8D2FA1-591C-11D0-BF52-0020AF32BD64} HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{9E8D2FA3-591C-11D0-BF52-0020AF32BD64} HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{9E8D2FA5-591C-11D0-BF52-0020AF32BD64} HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{9E8D2FA7-591C-11D0-BF52-0020AF32BD64} HKEY_LOCAL_MACHINE\Software\Classes\TypeLib\{83F57D68-CA9A-11D2-9088-00C04FA35CFA} 2) De la siguiente rama, borrar únicamente la entrada a la derecha que se refiera a midas.dll HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs Manual de errores y soluciones, página 5 4 Solucionar el retraso de cierre de las bases de datos Firebird en Windows XP Cuando el ordenador que tiene el servidor de datos FIREBIRD y, por tanto, alberga a la base de datos de la aplicación Gedisweb y tiene instalado el sistema operativo Windows® XP en cualquiera de sus versiones (Home, Professional, Server, Advanced Server), la aplicación que se ejecuta en el mismo ordenador puede experimentar un retraso anormal cuando queremos salir de ella. Esto es debido a dos causas fundamentales: Causa 1: De alguna forma, la extensión de los ficheros físicos de las bases de datos (GDB) se pretenden incluir en el backup de recuperación del sistema de Windows XP produciendo un retraso cuando se cierran ya que se actualiza en dicho backup. Solución 1a: Ubicar la base de datos en una unidad donde podamos deshabilitar la utilidad Restaurar sistema. Para deshabilitar esta utilidad haremos click con el botón derecho del ratón sobre el icono Mi PC del escritorio. Elegimos la opción Propiedades. Dentro de ella, elegimos la pestaña Restaurar sistema. Elegimos la unidad donde está nuestra base de datos y pulsamos el botón configuración. Dentro de la ventana que aparece marcamos Desactivar Restaurar sistema en esta unidad y se deshabilitarán las demás opciones. Manual de errores y soluciones, página 6 Solución 1b: En caso de que la primera solución no fuera posible, las aplicaciones Gedisweb disponen de un parámetro local para “forzar” a la aplicación a salir rápidamente sin esperar al cierre de la base de datos llamado Finalizar aplicación rápidamente y que se localiza en la opción de menú Configuración/Utilidades Parámetros Locales a este ordenador/usuario Windows. Realmente lo que hace la aplicación es un autokill. Esta opción se ha probado sin aparentes problemas pero no podemos garantizar que funcione en el 100% de los sistemas. Lo mejor es hacer una prueba con el parámetro habilitado y ver si todo funciona bien. Si es así, dejarlo habilitado. De todas formas y para evitar efectos laterales, este parámetro se deshabilita temporalmente cuando se convierte la base de datos a otra versión o se realizan copias de seguridad de la misma. Causa 2: El cable de red está desconectado (o lo desconectamos manualmente nosotros según circunstancias) y, en ocasiones, incluso no se puede conectar a la base de datos. Esto es una nueva característica de Windosw XP llamada DHCP Media Sense que automáticamente deshabilita la pila del protocolo TCP/IP cuando detecta que no hay conexión de red. Solución 2: Abrir el registro de windows y localizar la clave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters. Añadir una nueva clave DWORD llamada DisableDHCPMediaSense y establecerle el valor a 1. Para habilitar de nuevo DHCP Media Sense no hace falta borrar esta clave ya que simplemente estableceremos el valor a 0 en ella. Manual de errores y soluciones, página 7 5 Command out of sync Es un error aleatorio que se suele dar sobre todo en arquitecturas que utilizan una base de datos MYSQL remota, es decir, ubicada en un servidor de hosting contratado con un proveedor de internet. En este caso debemos establecer el parámetro Número de registros transferidos en un bloque al valor Todos y que se localiza en la opción de menú Configuración/Utilidades Parámetros Locales a este ordenador/usuario Windows. Este parámetro reduce el tráfico en la red sobre todo cuando el ancho de banda es limitado como pasa cuando se accede a una base de datos remota, pero lamentablemente en según qué sistemas, no es posible reducir dicho tráfico ya que aleatoriamente se da este molesto error. Manual de errores y soluciones, página 8 6 Errores en el fichero de tipo No se pudo iniciar la aplicación porque su configuración es incorrecta En la carpeta donde reside el ejecutable de la aplicación (normalmente C:\Archivos de programa\<nombre empresa distribuidor>\<nombre aplicación>\) de la forma aplicación.exe, existe un fichero de la forma aplicación.exe.manifest que sólo tiene efectividad para los sistemas Windows XP. Mediante este fichero, la aplicación Gedisweb se integra más en el sistema ofreciendo una interfaz con gráficos, botones y componentes al nuevo estilo de Windows XP. Un problema en dicho fichero origina el siguiente error En este caso lo primero que debemos hacer es renombrar el fichero aplicacion.exe.manifest a, por ejemplo, aplicación.exe.manifest.bak y probar la ejecución. Si no hay problemas, el fichero por algún motivo se ha corrompido. La aplicación funciona perfectamente sin ese fichero aunque con un aspecto al estilo estándar de windows. Aún así, podemos regenerar dicho fichero manualmente ya que es un fichero de texto con una configuración muy particular pero muy estándar. Editar el fichero (o abrir uno nuevo) con un editor de texto, por ejemplo, NOTEPAD y copiar exactamente el texto de abajo sustituyendo *nombre_ejecutable* por el nombre del ejecutable sin el .exe y *descripcion_aplicacion* por la descripción que deseemos teniendo en cuenta que debemos usar los caracteres A-Z, a-z, 0-9 y espacios sin ningún carácter acentuado ni la ñ. <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="*nombre_ejecutable*" processorArchitecture="x86" version="5.0.1.329" type="win32" /> <description>*descripcion_aplicacion*</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly> Manual de errores y soluciones, página 9 Luego colocar dicho fichero renombrado convenientemente en la misma carpeta donde resida el ejecutable de la aplicación Gedisweb. Manual de errores y soluciones, página 10 7 Errores en conversión de datos Cuando se actualiza una aplicación Gedisweb es posible que implique una conversión de datos. Dicha conversión de datos la realiza automáticamente la aplicación tras haber entrado a ella con un nombre de usuario y contraseña válidos. Si existe tal conversión la aplicación avisa antes de convertir y tras su confirmación empieza el proceso. Ocasionalmente por alguna particularidad en la base de datos del cliente pudiera dar algún error visualizando una ventana parecida a la siguiente y seguidamente se cierra el programa. Lamentablemente, esto exige una intervención por parte de Gedisweb para ver la causa del error con un probable análisis de la base de datos. No obstante, es posible que con unas instrucciones telefónicas se pueda subsanar el error. En este último caso, debemos dictar el número de línea donde dá el error (en el ejemplo, la línea 8) y es muy probable que debamos entrar a la base de datos mediante el programa IBOconsole si estamos utilizando la base de datos FIREBIRD, MYSQLcc si estamos utilizando la base de datos MYSQL o MsManager si estamos utilizando la base de datos SQLSERVER. Referirse al manual de mantenimiento de bases de datos para configurar dichos programas. Manual de errores y soluciones, página 11