Error al conectar BD Firebird
Tengo una base de datos en Firebird creada al ejecutarse una aplicación por primera vez y ahor no logro conectarme a ella aunque creo que no he modificado nada. Si trato de abrirla con SQL Manager Lite me da esta información:
Cita:
Estoy usando Firebird 2.5.2.26540 y tuve instalado Firebird 2.5.3.26778 pero da lo mismo. He probado a arreglarla con la herramienta gfix de Firebird pero o no entiendo como funciona o no hace nada. |
Puede ser que la base se ha corrompido.
¿La has copiado mientras alguna aplicación estaba conectada? ¿Estás seguro de que es una base de datos GDB/FDB y no un backup GBK/FBK al que hayas cambiado el nombre? ¿Tienes una copia anterior que si funcione para comparar tamaño? ¿Cómo se crea la primera vez? Es una copia de una "Base Modelo" o la creas mediante SQL. |
lo mas probable es que en nuevo firebird que instalastes soporte solo .fdb
- para solucionar el problema volver a instalar Firebird 2.5.2.26540 o convertir colegio.gdb a colegio.fdb - para convertir .gdb a .fdb 1.- Generar backup de la base actual (colegio.gdb) 2.- ejecutar gbak -c colegio.GBK nuevocolegio.fdb -user SYSDBA -password masterkey 3.- renombrar nuevocolegio.fdb a colegio.fdb saludos |
Cita:
Cita:
|
Gracias a los tres por las respuestas.
Cita:
1. La copia se hizo estando cerrado todas las aplicaciones, excepto el escritorio remoto (TeamViewer) con la que me la traje. El problema es que la aplicación original, que tengo que adaptar al nuevo formato de emisión de recibos de acuerdo al estándar SEPA, está funcionando sin error alguno. Cita:
|
He probado restaurando la base de datos desde el backup con gbak y me da el mismo mensaje de error. La única diferencia es que ahora dice esto:
Cita:
|
La forma de transportar una base de datos de un ordenador a otro es haciendo backup/restore.
Si has copiado la base de datos, es muy probable que se haya corrompido. ¿Cuál es la línea de comando que utilizas para hacer le backup? ¿Cuál es la línea de comando que utilizas para hacer le restore? Si alguna vez has cambiado de versión de Firebird, asegúrate que el archivo GBAK.EXE es el que corresponde a la versión. Me ha sucedido que un compañero, para no tener que escribir toda la ruta al archivo, lo copio al lado de la base de datos. Tiempo después se actualizó la versión pero nadie se acordó de copiar el GBAK de la nueva versión al lado de la base de datos y los backups empezaron a dar errores. Código:
C:\Program Files\Firebird\Firebird_2_5\bin>gbak.exe -z |
Me acabo de fijar en que una era la 2.5.2 y la otra 2.5.3
Deberías de probar a hacerlo "normalmente". Supongo que el backup que tienes es de la 2.5.2, y supongo que no existe el backup con el parámetro "transportable", así que: Con firebird 2.5.2 restauras el backup. Debería estar bien. Luego haces un backup transportable, con el parámetro -t gbak -b -t -v -user zzzzzzz -password yyyyyy basedatos.fdb basedatos.fbk Luego desisntalas esa versión e instalas la 2.5.3 Ahora la restauras normalmente: gbak -r -p 8192 -v -user zzzzzzz -password yyyyyy basedatos.fbk basedatos.fdb EDITO: Ahora veo el mensaje de [duilioisola]. Realmente es eso, una mezcla de versiones y haber hecho un backup no transportable. |
En las ultimas versiones de Delphi si uno no pone atención se instala Interbase XE, y usa aun el mismo nombre de dll (GDS32.DLL), cuando se instala firebird posteriormente este no puede reescribir esa dll y puede causar problemas (...y me los causó).
Saludos. |
Creo recordar es como dice Young.
En principio el orden para localizar la dll gds32 o fbclient.dll es: - carpeta del ejecutable - carpeta system32 ó SYSWOO64 - variables de entorno En system32 siempre deberá estar la dll de la versión más moderna, ya que tiene compatibilidad hacia atrás hasta Interbase 6. Si un Firebird más nuevo quiere conectarse con una gds32.dll antigua, lo más normal es que dé problemas. Hoy en día lo que se está haciendo es distribuir una versión de Firebird personalizada para tu aplicación, de esa forma, pueden coexistir en el servidor físico, 3 servidores firebirds por puertos distintos. El escenario es simple, un servidor de una empresa donde usan 3 programas de distintos creadores, cada uno con su servicio de Guardian y Server. Todos viven y dejan vivir. Las tareas son simples: - copiar todas las subcarpetas de archivos de programa\Firebird\Firebird_2_5 en una subcarpeta de tu instalación. - En la carpeta bin de firebird tienes unos ficheros bat para registrar tu servicio, tan simple como: c:\mi programa\fb252\bin\instreg MiPrograma Eso creará el servicio de Firebird llamado "Firebird Guardian MiPrograma", "Firebird Server MiPrograma" y los arrancará. - El Firebird.conf debe estar preparado con tus opciones: - El puerto 3050 y 3051 cambiarlos a los que tú quieras por ejemplo 3066 y 3067 - RemoteServiceName: en lugar del gds_db, pones "MiPrograma" (ya de memoria no recuerdo las demás cosas, pero está documentado: http://www.destructor.de/firebird/multiinstance.htm eah!, para los vagos ;)) Para conectar a tu base de datos desde delphi: 192.168.1.12/3066:c:\bdMiPrograma\dd.fdb Saludos!! |
Una cosa que se me olvidó comentar: La aplicación está hecha en C++ Builder 5.
Cita:
Código:
Backup->LoginPrompt = false; Cita:
Cita:
|
Cita:
Cita:
|
Cita:
Cita:
¿Te refieres a que SQL Manager Lite no lo puede abrir o es tu aplicación? Yo creo que si el restore tuvo éxito, el problema está en algún lío de versiones por parte del cliente o por parte del servidor. Prueba hacer una máquina virtual limpia, le instalas Firebird y el SQL Manager, haces el restore y pruebas la conexión. |
Cita:
Cita:
|
Cita:
|
No te vuelvas loco. Detente, relájate un rato y después vuelve paso a paso, con las cosas claras.
Versión con la que se hizo el backup y restaurarlo con la misma versión. Ya hecho y funciona. Crear un nuevo backup transportable para llevarlo a otra versión. En la otra versión, restaurar el backup. No hay más. Tan solo debes estar seguro de que las versiones están correctamente instaladas y no están mezcladas. (gds32.dll fbclient.dll gbak etc...) Simplemente eso. |
Angel si continuas con el error realiza los pasos siguientes (Tuve este problemas al cambiar la base de servidor en mas de una vez y solucione el problema con las indicaciones sgtes):
lo mas probable es que en nuevo firebird que instalastes soporte solo .fdb - para solucionar el problema volver a instalar Firebird 2.5.2.26540 o convertir colegio.gdb a colegio.fdb - para convertir .gdb a .fdb 1.- Generar backup de la base actual (colegio.gdb) 2.- ejecutar gbak -c colegio.GBK nuevocolegio.fdb -user SYSDBA -password masterkey 3.- renombrar nuevocolegio.fdb a colegio.fdb |
Cita:
Intenta conectar a pruebas.zzz Pregunto: ¿acaso firebird ha incluido esa característica a la última versión?, es que no lo he leido en ningún sitio, de momento. |
Gracias por vuestros mensajes. Debo ser algo más que bruto... :mad:
Cita:
Cita:
Cita:
Cita:
Código:
try Voy a probar otra cosa. Esta mañana, buscando con Google encontré un enlace Firebird Recuperación de bases de datos que utiliza la herramienta IBPump. Y en caso extremo, a las malas, como en el equipo donde corre la aplicación si funciona intentaré descargarme las tablas en ficheros de texto con la herramienta de extracción de bases de datos a un fichero de texto y la cargaría a la bestia. Ya sé que es una burrada, pero visto lo visto...:confused: |
¿Seguro que no tienes una mezcla rara de versiones?
Es que si has hecho un restore correctamente, entonces tendrías que abrirla igualmente. |
La franja horaria es GMT +2. Ahora son las 01:27:05. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi