Firebird 2.5 и Windows 2008 R2 x64

Sevenfly
Дата: 22.08.2012 10:10:12
Добрый день.

Столкнулся с такой проблемой - есть задача связываться с Firebird из MS Integration Services 2012, БД Firebird на удалённом рабочем сервер.

На сервере с MS Integration Services 2012 первоначально была установлена БД Firebird в конфигурации Classic, но добавить подключение в ODBC Data Source Administrtor не получалось, не было возможности выбрать FireBird драйвер.

Установил ODBC драйвера Firebird с сайта FireBird 32х битную и 64х битную версию. После этого в списке выбора баз данных для написания DSN появился Firebird. Но дальше начались странности: проверить подключение можно только запустив odbcad32 из папки SysWow64.

При запуске из папки System32 при попытке проверить подключение уже настроенного DSN выдаётся сообщение Открыть базу данных не удалось, вне зависимости от того, какой путь к клиенту указан в настройках - C:\Windows\System32\FBCLIENT.DLL или C:\Windows\SysWow64\FBCLIENT.DLL


В Visual Studio пакет же работает только в 32х битном (как не странно) режиме.

Из-за чего может быть такая проблема и как можно сделать, чтобы подключение было одновременно доступно и в 32х битном и в 64х битном режиме?

Заранее спасибо!
Dimitry Sibiryakov
Дата: 22.08.2012 11:04:39

Sevenfly
Из-за чего может быть такая проблема

Из-за того, что некоторые так называемые "программисты" не знают разницу между 32-х битыми
приложениями/библиотеками и 64-х битными. И вообще мало что знают о работе компьютеров.

Posted via ActualForum NNTP Server 1.5

Sevenfly
Дата: 22.08.2012 11:31:44
Dimitry Sibiryakov,

А можно поподробнее?
Dimitry Sibiryakov
Дата: 22.08.2012 11:35:08

Sevenfly
А можно поподробнее?

Можно: 64-х битное приложение не может использовать 32-х битную DLL и наоборот. Никак.

Posted via ActualForum NNTP Server 1.5

Sevenfly
Дата: 22.08.2012 11:55:01
Dimitry Sibiryakov,

Ок, усложняем вопрос
1. Разобрались, что в SystemWow64 хранятся 32х битные либы, а не наоборот, и что соответственно fbclient - 32х битная версия
2. Удалили все версии клиентов ODBC и из system32 и syswow64 файлы OdbcFb.dll
3. Установили дистриб только версии x64 ODBC (который закинул файлы в папки system32 и syswow64)
4. В реестре видим вроде бы корректные записи

Ветка SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\Firebird/InterBase(r) driver
Driver C:\Windows\SysWOW64\OdbcFb.dll

Ветка SOFTWARE\ODBC\ODBCINST.INI\Firebird/InterBase(r) driver
C:\Windows\system32\OdbcFb.dll


В настройках подключения ODBC не указываем путь к клиенту, а только выбираем, что драйвер IscDbc.

При запуске odbcad32 из папке System32 получаем ошибку "Открыть базу данных не удалось", при попытке запуска из SysWow64 соединение устанавливается

Из-за чего может не работать 64х битная версия?
dimitr
Дата: 22.08.2012 11:57:59
из-за 32-битного fbclient-а
Sevenfly
Дата: 22.08.2012 12:29:15
dimitr
из-за 32-битного fbclient-а


Большое спасибо!


Да, всё верно, был установлен 32х битный сервер, при установке которого установился только 32х битный fbclient. Скачал дистри 64х битный сервер, оттуда взял 64х битный fbclient, закинул в system32, всё заработало.