1. Inicio
  2. Sistemas Microsip
  3. Base de datos Firebird
  4. Procedimiento para instalar dos versiones de Firebird en el mismo equipo

Procedimiento para instalar dos versiones de Firebird en el mismo equipo

Introducción

Microsip 2019 es la primera versión de Microsip que utiliza la versión 3.0 de Firebird. Sin embargo, en algunos casos es necesario tener instalada una versión de Firebird anterior a la 3.0 corriendo a la par con la nueva versión 3.0.

No es posible instalar ambas versiones usando los instaladores de Firebird ya que al intentar la instalación del segundo servidor no podrá completarse debido a que se detecta otra versión de Firebird instalada.

Este documento indica cómo instalar dos versiones distintas de Firebird para que se ejecuten en el mismo equipo, instalando la versión 3.0 de manera tradicional con el instalador y la versión 2.5 por ejemplo, usando un “zip kit”.

Consideraciones

Este procedimiento describe cómo instalar dos versiones de Firebird en un mismo servidor:

  • Firebird 3.0 corriendo en el puerto 3050.
  • Firebird 2.5 corriendo en el puerto 3055.

Para esto, es necesario construir las cadenas de conexión indicando el puerto a utilizar, dependiendo de la versión de Firebird a la que se desea conectar:

  • Al registrar la conexión en Microsip, indique el Servidor con el formato:
    [IP del Servidor]/[Puerto]
  • Para otro tipo de aplicaciones, al crear la cadena de conexión se debe indicar el puerto. La sintaxis de la cadena de conexión varía según la versión de Firebird:
    • Firebird 2.5 y anteriores: [IP del Servidor]/[Puerto]:[Ruta a base de datos]
      • Ejemplo: 192.168.1.192/3060:c:\fb25\database.fdb
    • Firebird 3.0: [Protocolo]://[Servidor]:[Puerto]/[Ruta a base de datos]
      • Ejemplo: inet://192.168.0.11:3055/C:\db\mydb.fdb

Nota
Firebird 3.0 sigue soportando la sintaxis “legacy” de firebird 2.5 descrita en el punto “Firebird 2.5 y anteriores”.

Procedimiento

Firebird 3.0

Instale la versión de Firebird 3.0 usando el instalador que se puede obtener en la siguiente liga: https://www.firebirdsql.org/en/firebird-3-0/. El instalador tendrá un nombre como el siguiente: “Firebird-3.0.4.33054_0_x64.exe”.

Ejecute el instalador de la siguiente manera:

  • Acepte el uso de la licencia.
  • Indique la ruta de instalación. Se puede dejar la ruta sugerida.
  • Deje seleccionados todos los componentes sugeridos:
  • Deje los accesos directos en la carpeta sugerida.
  • Deje los valores sugeridos en “Tareas adicionales”:
  • Haga clic en el botón “Siguiente” en las siguientes pantallas para terminar completar el proceso de instalación de Firebird.

Firebird 2.5

Registre la versión 2.5 de Firebird usando el “zip kit”, dicho archivo se puede obtener en la siguiente liga: https://www.firebirdsql.org/en/firebird-2-5/. El zip kit tendrá un nombre como el siguiente: “Firebird-2.5.8.27089-0_x64.zip”.

Hacer lo siguiente para registrarla:

  • Descomprima el archivo a una carpeta. Ejemplo: “C:\Firebird-2.5.8.27089-0_x64”
  • Configure el puerto a usar con Firebird 2.5.
    Dado que el puerto predeterminado 3050 ya estará en uso por el servicio de Firebird 3.0 es necesario configurar otro puerto, por ejemplo el 3055.
    • Abra el archivo de configuración del servidor “firebird.conf” con un editor de texto.
      Ejemplo: “C:\Firebird-2.5.8.27089-0_x64\firebird.conf”.
    • Localice el parámetro RemoteServicePort y elimine el caracter “#” al inicio de la línea para que deje de ser un comentario y entre en efecto.
    • Cambie el puerto a 3055

Nota
Si desea volver a cambiar el puerto será necesario reiniciar el servicio de
Firebird 2.5 en la consola de servicios de Windows (services.msc) para que los
cambios surtan efecto.

  • Abra una ventana de símbolo del sistema (cmd.exe) y ubíquese en la subcarpeta “bin” de la carpeta donde se ubica firebird 2.5.
    Ejemplo: “cd c:\Firebird-2.5.8.27089-0_x64\bin”
  • Ejecute el comando “instsvc i -n Firebird25” para registrar el servicio de Firebird 2.5 con el nombre “Firebird25” y acepte los cambios en el equipo para el control de cuentas de usuario.

Comprobar versiones instaladas

  • Ejecute la consola de servicios de Windows para verificar que ya se tienen instaladas las dos versiones de Firebird (Ejecutar -> services.msc).
  • Se deben tener registrados dos servicios:
    • El servicio ‘Firebird Server – DefaultInstance’ será el servicio de Firebird 3.0.
    • El servicio de ‘Firebird Server – Firebird25’ será el servicio de Firebird 2.5.
  • Inicie el servicio de Firebird 2.5 en caso de que todavía no esté en ejecución.
  • Una vez realizado lo anterior debe ser posible conectarse al servicio de Firebird 3.0 indicando el puerto 3050 en los parámetros de conexión y al servicio de Firebird 2.5 indicando el puerto 3055.
  • Si utiliza una herramienta como FlameRobin será necesario copiar a la carpeta donde está instalada dicha herramienta el archivo cliente (fbclient.dll) versión 2.5 o versión 3.0 dependiendo de cual servicio es al que se desea conectar.

Nota
Para cambiar el cliente fbclient.dll será necesario cerrar la herramienta ya
que de lo contrario el archivo estará en uso.
Se debe usar el cliente fbclient.dll que corresponda a la arquitectura para la
cual fue diseñada la herramienta (32 o 64 bits).

Consideraciones Importantes

  • El instalador de Firebird 3.0 dejará el cliente de firebird versión 3.0 (fbclient.dll) en la carpeta del sistema de Windows:
    • En equipos con Windows de 64 bits:
      • “c:\Windows\System32” para instalaciones de Firebird de 64 bits.
      • “c:\Windows\SysWow64” para instalaciones de Firebird de 32 bits.
    • En equipos con Windows de 32 bits:
      • “c:\Windows\System32” para instalaciones de Firebird de 32 bits.
    • Este cliente de firebird de la carpeta de sistema será el que intentarán de manera predeterminada las aplicaciones que se intenten conectar al servicio de Firebird. Por lo anterior, es necesario que las aplicaciones que se van a conectar al servicio de Firebird 2.5 cuenten con su copia propia del cliente fbclient.dll versión 2.5 en la carpeta en donde estén instaladas.
  • El servidor de firebird está disponible para equipos con arquitecturas de 32 y 64 bits. De la misma manera, cliente de firebird (fbclient.dll) que incluye el servidor puede ser de 32 o 64 bits.
  • Es importante utilizar la arquitectura correcta (32 ó 64 bits) del cliente de firebird (fbclient.dll), la cual debe ser de la misma arquitectura que la de la aplicación. Por ejemplo, un ejecutable “AplicacionCliente.exe” con el que se desea conectar al servidor de Firebird.
  • Nota: Sí es posible conectarse a un servidor de firebird con una determinada arquitectura (por ejemplo 64 bits) usando un cliente con una arquitectura distinta (por ejemplo 32 bits).
  • Independientemente de lo anterior, es necesario usar la misma versión (por ejemplo: firebird 3.0) tanto en el servidor como en las aplicaciones cliente que se conectan al servidor.
  • Ejemplos de configuraciones válidas:
    • Servidor de 64 bits y cliente de 32 bits:
      • La aplicación cliente (ejecutable) es compilada en 32 bits. Se usa el fbclient.dll de 32 bits versión 2.5.
      • El servidor de Firebird versión 2.5 tiene arquitectura de 64 bits.
    • Servidor de 32 bits y cliente de 32 bits:
      • La aplicación cliente es compilada en 32 bits. Se usa el fbclient.dll de 32 bits versión 3.0.
      • El servidor de Firebird versión 3.0 tiene arquitectura de 32 bits

Conexiones locales con dos versiones de Firebird Instaladas

Al tener instaladas dos versiones de Firebird en el mismo equipo (por ejemplo Firebird 2.5 y Firebird 3.0) las conexiones locales (protocolo xnet) son atendidas por el servicio de Firebird que haya arrancado primero en Windows. Esto sucede así debido a que en una conexión local no se indica el nombre del servidor ni el puerto.

Es necesario tomar muy en cuenta lo anterior para asegurar que una conexión local sea atendida por la versión de Firebird compatible con la base de datos. Por ejemplo, al trabajar con Microsip 2019 la conexión local debe ser atendida por Firebird 3.0, de lo contrario se obtendrá un problema en la conexión por incompatibilidad.

Para solucionar lo anterior se puede optar por alguna de las siguientes estrategias:

  • No utilizar conexiones locales
    Esta estrategia consiste en definir una conexión de tipo remota para poder especificar el servidor y el puerto aunque éstos sean locales, rompiendo así la ambigüedad. Por ejemplo, si se tiene el servicio de Firebird 2.5 corriendo en el puerto 3055 y el servicio de Firebird 3.0 en el puerto de default 3050, entonces los servidores de las conexiones serían localhost:3055 y localhost:3050 respectivamente.
  • Iniciar primero el servicio de Firebird que atenderá las conexiones locales
    Si desea utilizar conexiones locales, puede corregir esto deteniendo manualmente “ambos” servicios en la consola de servicios de Windows (services.msc) y luego iniciar primero el servicio que atenderá las conexiones locales y luego iniciar el servicio que sólo atenderá conexiones remotas.

Nota
El problema de este ajuste manual es que la próxima vez que arranque el equipo no hay certeza de cuál servicio iniciará primero. Una técnica para lograr certeza en cuál servicio inicia primero consiste en establecer una dependencia del servicio que sólo atenderá conexiones remotas al servicio que atenderá conexiones locales y remotas. De esta manera el servicio dependiente iniciará siempre después del servicio del que depende.

Para establecer esta dependencia se hace lo siguiente:

  • Como ejemplo, se desea iniciar primero el servicio de Firebird 3.0 que atenderá conexiones locales y remotas y después iniciar el servicio dependiente Firebird 2.5 que atenderá solo conexiones remotas.
  • Ejecute la consola de servicios de Windows (services.msc) y obtenga los nombres de cada servicio. Abra las propiedades de cada servicio, seleccione el texto del nombre y copie su valor con el botón derecho del mouse.
  • Después, ejecute el siguiente comando para establecer la dependencia de un servicio con otro:
    sc config [nombre del servicio] depend= [nombre del servicio del que depende]

    Nota: Debe ejecutar el comando en una ventana de símbolo del sistema (cmd.exe) con permisos de Administrador.
    Ejemplo:
    sc config FirebirdServerFirebird25 depend=FirebirdServerDefaultInstance

    En este ejemplo, el servicio “FirebirdServerFirebird25” depende del servicio “FirebirdServerDefaultInstance” y por lo tanto el orden de inicio será:
    1. FirebirdServerDefaultInstance
    2. FirebirdServerFirebird25

    Nota: Para eliminar la dependencia ejecute el siguiente comando:
    sc config [nombre del servicio] depend=/
    Ejemplo:
    sc config FirebirdServerFirebird25 depend=/
Actualizado el 15 enero, 2021

¿Te resultó útil?

Artículos relacionados

Leave a Comment