Программно узнать версию сервера

Совместимость InterBase, Firebird, Yaffil между собой и по версиям

Модераторы: kdv, Alexey Kovyazin

Ответить
FMA
Сообщения: 15
Зарегистрирован: 08 фев 2007, 12:37

Программно узнать версию сервера

Сообщение FMA » 10 авг 2009, 09:45

Как узнать программно версию запущенного сервера FireBird-a?
Дело в том, что использую FireBird версии 2.1.2, а у пользователя есть еще используемая лицензионная прога под управлением версии 1.5.
При этом оба сервера стоят на одном ПК, и он их попеременно запускает для работы то в одной, то в другой проге.
Разносить версии по портам для него не выход (такой уж пользователь). Поэтому для избежания некорректной работы моей проги, мне нужно при запуске до соединения с сервером узнать какая его версия сейчас запущена.
То что сервер запущен узнать не проблема, но пока незнаю как определить версию.

Надеюсь на помощь и понимание.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Программно узнать версию сервера

Сообщение hvlad » 10 авг 2009, 10:16

Т.е. API сервера даже краем глаза не смотрел (я уже не говорю о документации), а "проги" уже клепаешь и продаёшь ?..
Embedded не подойдёт для твоей "проги" ?

FMA
Сообщения: 15
Зарегистрирован: 08 фев 2007, 12:37

Re: Программно узнать версию сервера

Сообщение FMA » 10 авг 2009, 11:11

Вариант с Embedded в данном случае не подходит.
С API сервера пока не приходилось работать, а та документация что выложена по API на сайте к сожалению на английском и примеры на C++. А с тем и другим у меня маленькие проблемки. :(
Т.ч. если не затрудит укажите, пожалуйста, еще источники по решению вышеуказанной проблемы.
Ну или есть ли у кого-нибудь примеры работы с API сервера для Delphi? Буду очень признателен.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: Программно узнать версию сервера

Сообщение Dimitry Sibiryakov » 10 авг 2009, 14:01

Если действительно хочешь версию, рой в сторону isc_info_firebird_version, но лично я бы просто создал БД с ODS от 2.1 и при попытии подключиться к ней через 1.5 получал бы отлуп по неверной версии.

Хотя нет, вру, я бы скорее сделал программу, которая работает с 1.5...

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Программно узнать версию сервера

Сообщение kdv » 10 авг 2009, 16:10

Вариант с Embedded в данном случае не подходит.
интересно, почему? И почему нельзя развести разные версии ФБ по разным портам? Про разные ODS Влад сказал, а я промолчу.

Guardian777
Сообщения: 33
Зарегистрирован: 09 июл 2009, 14:57

Re: Программно узнать версию сервера

Сообщение Guardian777 » 10 авг 2009, 16:19

Если ты используешь компоненты FIBPlus, то у предка компонента TpFIBDataBase есть свойство FBVersion, котрое можно получить после открытия БД. Но я не уверен в том успевает ли сервер испортить метаданные. У кого по этому поводу есть достоверные сведения ?

skin
Сообщения: 3
Зарегистрирован: 26 мар 2009, 06:38

Re: Программно узнать версию сервера

Сообщение skin » 13 авг 2009, 09:05

Можно возспользоваться TIBServerProperties (IBX) или TpFIBServerProperties (FIBPlus) с их помощью можно и версию сервера узнать и ещё много чего другого интересного.

P.S. Два сервера на разных портах не подходят.. Embedded не подходит... что религия такая? :)

FMA
Сообщения: 15
Зарегистрирован: 08 фев 2007, 12:37

Re: Программно узнать версию сервера

Сообщение FMA » 13 авг 2009, 20:32

Embedded не подходит, т.к. с БД может работать одновременно несколько клиентов по сети.
"Развод" по нескольким портам не подходит, т.к. не предусмотрел в проге работу с указанием порта (два FireBird-a пока частный случай, в дальнейшем предусмотрю), а пользователи в массе своей не шибко во всем этом смыслят.
Под версию 1.5 не перепишу, т.к. программой пользуются уже 10-ки пользователей. :)

Всем спасибо, проблема решена!!!

skin
Сообщения: 3
Зарегистрирован: 26 мар 2009, 06:38

Re: Программно узнать версию сервера

Сообщение skin » 14 авг 2009, 08:46

не предусмотрел в проге работу с указанием порта
порт указывается в строке подключения
<server_name>[/<port>]:<database_alias>
например:
localhost/3052:my_database

Ответить