Иногда возникает ситуация, когда на одном компьютере необходимо разместить несколько баз данных, которые были созданы в разных версиях СУБД Firebird, например, 1.5 и 2.5. Использовать одну версию при этом нельзя, потому что, например, в БД для версии 2.5 задействованы функции, отсутствующие в 1.5, а программа, работающая с БД для версии 1.5, содержит и исполняет скрипты, которые СУБД версии 2.5 выполнять не позволяет и объявляет ошибочными (например, если попытаться обратиться в запросе по оригинальному имени таблицы, для которой объявлен псевдоним).

В этом случае даже если речь идёт о своём программном обеспечении не всегда можно провести своевременный рефакторинг: на это требуется как минимум время и другие ресурсы. Когда же речь идёт о стороннем ПО, внести изменения в него чаще всего вообще невозможно.

Для решения этой проблемы установить несколько СУБД Firebird на одном компьютере.

СУБД Firebird, запущенная в качестве службы, слушает подключения по определённому порту (по умолчанию 3050). Если попытаться установить Firebird несколько раз, установщик выдаст соответствующее предупреждение и не создаст службу, несмотря на то, что файлы будут скопированы. Значит, нам надо дополнительно проделать две вещи: установить службу вручную, разнести разные версии СУБД на разные порты и запустить службу. В итоге последовательность действий на чистом компьютере выглядит так:

  1. Устанавливаем первый экземпляр Firebird. Установка происходит стандартным образом.
  2. Устанавливаем второй, третий и т. д. экземпляры Firebird. В процессе каждой установки будет предупреждение, что Firebird другой версии уже установлен, будет предложено остановить имеющуюся службу. Её надо остановить, установку не прекращать. После установки файлы будут скопированы, но новых служб не появится.
  3. Необходимо прописать разные порты. Файл настроек firebird.conf находится в каталоге установки Firebird, например c:\Program Files (x86)\Firebird\Firebird_2_5\firebird.conf. Открываем его текстовым редактором и ищем строку (изначально закомментированную) «#RemoteServicePort = 3050». Убираем комментарий и явно указываем порт, например, «RemoteServicePort = 3051». Для каждой копии Firebird прописываем свой порт: 3050, 3051, 3052 и т. д.
  4. Проверяем, какие службы Firebird уже есть. Заходим в «Панель управления» — «Администрирование» — «Службы» («Control Panel» — «Administrative Tools» — «Services») и ищем, имя будет примерно «Firebird Server — DefaultInstance». Останавливаем. Открываем двойным щелчком и смотрим путь к файлу. Службу для копии СУБД из этого каталога на следующем шаге создавать не надо.
  5. Создаём недостающие службы. Для каждой копии Firebird выполняем «sc.exe create Firebird_server_25 binpath= «c:\Program Files\Firebird\Firebird_2_5\bin\fbserver.exe -s» start= auto displayname= Firebird_server_25» в режиме командной строки, заменив пути и имена в приведённом примере своими путями и именами. Имена разных служб совпадать не должны.
  6. Запускаем все службы Firebird. Настройка СУБД завершена.
  7. При подключении к базе данных явно указываем порт через «/» после имени сервера. Например, в строке подключения вместо «localhost:d:\db\db.fdb» пишем «localhost/3051:d:\db\db.fdb», а вместо «localhost» в имени сервера пишем «localhost/3051». Где писать — зависит от программы: или в самом интерфейсе в настройках, или в файле настроек, или в реестре — смотрите документацию по каждому продукту.
  8. Информацию о настройках подключения в наших программах можно почитать рядом, на вкладке «Системному администратору».