Страница 1 из 1

одновременное подключение к IB 5.6 и 7.5

Добавлено: 17 июн 2007, 21:49
vortex
Наверное вопрос скорее для этого раздела.

Есть клиентское приложение на делфи и два IB сервера (windows 2003) с 2 базами. Первый - ib 7.5 sp1, второй - ib 5.6. Базы можно сказать идентичны, первая получена бэкап-рестором со старого сервера. Для работы проги соответвенно ставился interbase client от 5.6 и все работало. Причем соединялось с обеими серверами (старым и новым) без проблем.

У меня локально крутился сервер 5.6, сейчас соответственно понадобилось обновить его до 7.5. Поставил (win2000 serv), предварительно удалив предыдущий. В результате появилась проблема - при запуске с моей машины и соединении с удаленной базой под 5.6 приложение выдает ошибку (-923):Connection not established. В тоже время из ibexpert-а при этом я могу соединиться как с удаленной базой под 7.5, так и под 5.6, указав в последнем случае в кач-ве клиентской библиотеки gds32_old.dll (копия старой). А вот приложение не стартует, даже если я заменяю %systemroot%\system32\gds32.dll на ту, что идет вместе с ib клиентом 5.6.

Что я упустил? Вопрос сводится видимо к "что еще нужно приложению для соединения с удаленным сервером 5.6, если локально установлен сервер 7.5"? Саму прогу можно считать черным ящиком, есть только .exe-шник, ладно еще хоть сообщает код ошибки. Возможно путанно объяснил, с меня любые подробности.

Добавлено: 18 июн 2007, 00:20
kdv
imho по замене gds32.dll эксперимент не чистый. ищи поиском все такие файлы на компе. ibexpert от твоей проги ничем отличаться не должен, как минимум в плане коннекта. они оба вызвают isc_attach_database.

p.s. а вообще - забить болт. обратную совместимость никто не гарантирует. Или подсовывай свою gds32.dll каждой проге, или ...

Re: одновременное подключение к IB 5.6 и 7.5

Добавлено: 18 июн 2007, 08:45
stix-s
vortex писал(а):А вот приложение не стартует, даже если я заменяю %systemroot%\system32\gds32.dll на ту, что идет вместе с ib клиентом 5.6.

Что я упустил? Вопрос сводится видимо к "что еще нужно приложению для соединения с удаленным сервером 5.6, если локально установлен сервер 7.5"? Саму прогу можно считать черным ящиком, есть только .exe-шник, ладно еще хоть сообщает код ошибки. Возможно путанно объяснил, с меня любые подробности.
Попробуй бросить gds32.dll нужной тебе версии в каталог приложения, ибо винда сначала должна искать нужную DLL в каталоге приложения
гланое - не запутаться с ними потом :)

Добавлено: 18 июн 2007, 08:47
Dimitry Sibiryakov
Мои собственные эксперименты показали, что gds32.dll от старших серверов (за исключением печально известного 2007) нормально работают с 5.6, если пользоваться только первым диалектом и совместимым минимумом фич.

Добавлено: 18 июн 2007, 13:58
vortex
т.е. дело может быть _только_ в gds32.dll и ничем больше? Эту библиотеку от младшего сервера я подкладывал и в каталог с прогой и в system32 и в прочие места указанные в path. Потом просто запустил тулзу dllshow и посмотрел какую конкретно библиотеку использует приложение. dllshow показывает, что приложение использует (пытается) библиотеку из c:\winnt\system32\
Замена к сожалению не приводит к позитиву.
Ключи реестра и наличие каких-либо остаточных файлов от ib 5.6 не могут мешать коннекту?

Добавлено: 18 июн 2007, 14:04
stix-s
vortex писал(а): Саму прогу можно считать черным ящиком, есть только .exe-шник
Исходники, надо полагать, отсутствуют?

Добавлено: 18 июн 2007, 15:55
vortex
Исходников нет, факт. Но проблема неожиданно разрешилась сама собой. Особенного ничего не делал, просто отыскал все gds32.dll разбросанные по диску и привел их к общему знаменателю. в system32 (и где оно еще нашлось) положил длл от 5.6, в interbase\bin сервера - родную от 7.5. Заработало :)
Может мне конечно каким-то боком мешалась та, что шла в комплекте с php5 (тоже есть на компе), но это уже не важно. Всем спасибо.