Поделитесь пожалуйста опытом, у кого работает связь с MSSQL 2000 из под Cache' 5.0.20 (ну или других версий) на платформе Linux. Cache' должна выступать в качестве клиента, MSSQL соответственно сервера. Какие драйвера ODBC используются?
Я тут сам покопался и реализовал этот доступ. Расскажу на примере своей системы: Linux (Red Hat Enterprise Linux AS (Nahant Update 2) x86_64), платформа AMD64.
Настройки до установки Cache':
1. После установки системы удаляем все пакеты unixODBC. В моей системе после установки их оказалось 3 штуки, причем 2 из них имели одинаковые имена (как я понимаю, 32 и 64 разрядная версия). Поэтому для удаления используем команду:
2. Качаем с сайта http://www.iodbc.org исходники iODBC. В моем случае libiodbc-3.52.3.tar.gz, разворачиваем
5. Редактируем файл /etc/freetds.conf Добавляем туда следующий блок:
6. Снова тестируем работу FreeTDS:
7. Создаем файл /etc/odbc.ini следующего содержания:
8. Тестируем работу созданного DSN:
Алимов Игорь
ialimov@pochet.ru
Я тут сам покопался и реализовал этот доступ. Расскажу на примере своей системы: Linux (Red Hat Enterprise Linux AS (Nahant Update 2) x86_64), платформа AMD64.
Настройки до установки Cache':
1. После установки системы удаляем все пакеты unixODBC. В моей системе после установки их оказалось 3 штуки, причем 2 из них имели одинаковые имена (как я понимаю, 32 и 64 разрядная версия). Поэтому для удаления используем команду:
rpm -e unixODBC-kde-2.2.9-1затем,
rpm -e --allmatches unixODBC-2.2.9-1Дело в том, что unixODBC-kde-2.2.9-1 зависит от unixODBC-2.2.9-1 и первым удалить его не удастся. В принципе наверное этот шаг не обязателен, я их удалил что бы не мешались.
2. Качаем с сайта http://www.iodbc.org исходники iODBC. В моем случае libiodbc-3.52.3.tar.gz, разворачиваем
tar zxvf libiodbc-3.52.3.tar.gzзаходим в каталог libiodbc-3.52.3
cd libiodbc-3.52.3В принципе при компиляции iODBC можно еще дополнительно скомпилировать графическую утилиту для настройки DSN, для этого нужен установленный GTK и пакет gtk2-devel-2.4.13-16 (графическая библиотека GNOME). Конфигурим, компилируем и инсталлируем iODBC
./configure --prefix=/usr/local --with-iodbc-inidir=/etc make make install3. Качаем исходники FreeTDS с сайта http://www.freetds.org. В моем случае freetds-stable.tgz, разворачиваем
tar zxvf freetds-stable.tgzзаходим в каталог freetds-0.63
cd freetds-0.63Конфигурим, компилируем и инсталлируем FreeTDS
./configure --with-tdsver=8.0 --with-iodbc=/usr/local/lib --prefix=/usr/local --sysconfdir=/etc make make install4. Тестируем работу FreeTDS:
cd /usr/local/bin ./tsql -H имя_хоста -p 1433 -U saвводим на запрос пароль пользователя sa, если после этого видим
1>связь работает, можно попробовать sql команды.
5. Редактируем файл /etc/freetds.conf Добавляем туда следующий блок:
[MSSQL] host = имя_хоста port = 1433 tds version = 8.0 client charset = cp1251Имя секции задается произвольно.
6. Снова тестируем работу FreeTDS:
cd /usr/local/bin ./tsql -S MSSQL -U saгде MSSQL ранее заданное имя секции в freetds.conf
7. Создаем файл /etc/odbc.ini следующего содержания:
[ODBC Data Sources] ms_test = MS SQL Server Test [ms_test] Driver = /usr/local/lib/libtdsodbc.so Description = MS SQL Server Test Trace = No Servername = MSSQL Database = имя_базы_данных UID = sa [Default] Driver = /usr/local/lib/libtdsodbc.soгде ms_test - имя DSN, задается произвольно, Description - описание, тоже задается произвольно. Servername = MSSQL - имя секции в freetds.conf
8. Тестируем работу созданного DSN:
cd /usr/local/bin ./iodbctest "DSN=ms_test;UID=sa;PWD=пароль"должно появится:
iODBC Demonstration program This program shows an interactive SQL processor Driver Manager: 03.52.0305.1107 Driver: 0.63 (libtdsodbc.so) SQL>можно проверить работу SQL команд. Устанавливаем Cache', при этом указываем, что надо инсталлировать ODBC and SQL Gateway. После инсталляции смотрим зависимости cgate.so, по умолчанию, он зависит от cachesys/bin/libiodbc.so
cd /usr/local/cachesys/bin ldd cgate.soПереименовываем libiodbc.so в libiodbc.so.orign
mv libiodbc.so libiodbc.so.orignдля того что бы cgate.so был связан с правильной библиотекой выполняем:
ldconfig /usr/local/libсмотрим зависимости cgate.so
ldd cgate.soдолжны иметь что-то вроде:
libiodbc.so => /usr/local/lib/libiodbc.so (0x0000002a956bc000) libdl.so.2 => /lib64/libdl.so.2 (0x0000002a95806000) libstdc++.so.5 => /usr/lib64/libstdc++.so.5 (0x0000002a95909000) libm.so.6 => /lib64/tls/libm.so.6 (0x0000002a95ae4000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000002a95c6b000) libc.so.6 => /lib64/tls/libc.so.6 (0x0000002a95d76000) libiodbcinst.so.2 => /usr/local/lib/libiodbcinst.so.2 (0x0000002a95fa9000) /lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000)Устанавливаем две переменные окружения:
ODBCINI=/etc/odbc.ini SYSODBCINI=/etc/odbc.iniЯ это сделал в файле /etc/profile, следующим образом:
ODBCINI=/etc/odbc.ini SYSODBCINI=/etc/odbc.ini export ODBCINI SYSODBCINIпосле этого заходим в Cache' и проверяем работу SQLGatewayConnection
cache USER>s con=##class(%SQLGatewayConnection).%New() USER>w con.Connect("ms_test","sa","ваш_пароль") 1Если выдано 1 связь работает.
Алимов Игорь
ialimov@pochet.ru
Комментариев нет:
Отправить комментарий