Как узнать версию odbc драйвера linux

8 ODBC и проект unixODBC


Что такое проект unixODBC?

Цели проекта unixODBC состоят в том, чтобы разрабатывать и поддержать unixODBC, который призван стать окончательным стандартом для ODBC на не-MS Windows системах. Это должно включить поддержку GUI для KDE и GNOME. Платформы Microsoft включают много расширений в спецификацию ODBC, эти расширения также обеспечиваются unixODBC.

Группа разработчиков unixODBC достигла лучших на сегодняшний день результатов под Linux. Весь проект unixODBC распространяется согласно лицензиям GPL или LGPL. Наличие LGPL для библиотек позволяет применять их в коммерческом программном обеспечении с закрытыми исходными текстами.

ODBCConfig

Это приложение GUI, подобное MS ODBC Administrator. Это позволяет любому пользователю легко конфигурировать свои (пользовательские) источники данных. Пользователь root может также добавлять, удалять и настраивать общесистемные источники данных. Опции Driver меняются в зависимости от СУБД. ODBCConfig вызывает код Driver Config, чтобы позволить драйверу запрашивать пользователя относительно специфических опций.

Пользователь root может добавлять или удалять драйверы, используя ODBCConfig. Это скорее регистрация и отмена регистрации драйвера потому, что никакие файлы фактически не будут скопированы или перемещены, зато модифицируется информация системы ODBC.

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

DataManager

DataManager мог бы называться Data Explorer. Это приложение GUI, которое позволяет пользователю просматривать и управлять источниками данных. Более точно: оно позволяет пользователю просматривать источники данных, начиная с имени источника и заканчивая таблицами, столбцами и индексами. Это также включает SQL-редактор, который позволяет пользователю представлять на рассмотрение источнику данных SQL-запросы и просматривать результаты.

DriverManager

ODBC-приложения делают ODBC-вызовы через DriverManager. DriverManager выполняет ряд задач для приложения:

  • Обеспечение загрузки и выгрузки соответствующего драйвера
  • Задачи проверки правильности
  • Отображение данных и вызовов 3.5 на 3.0 и на 2.0

Большинство обращений к DriverManager передается на загруженный драйвер, чтобы он их дальше обработал сам.

Некоторые преимущества от использования ODBC DriverManager включают;

  • Переносной (мобильный) код доступа к данным
  • Связывание во время выполнения с источником данных (Data Source)
  • Способность легко изменять источник данных

Использование unixODBC с wine

Когда Crystal Reports запущен под WINE и использует ODBC, появляется сообщение о том, что строка соединения недопустима (сообщение об ошибке: «Unable to connect: Incorrect log on parameters»).

Дело в том, что Crystal Reports обращается к реестру Windows, чтобы найти там настройки драйвера для DSN в секции ODBC.INI реестра. Так как установка драйвера находится в файловой системе Linux, ничего хорошего он там не находит, что и приводит к ошибке.

Чтобы исправить положение надо ввести соответствующую запись в реестр. Новая запись может располагаться в дереве HKEY_CURRENT_USER или в HKEY_LOCAL_MACHINE и выглядит так: Software->ODBC->ODBC.INI-> -> Driver=»not blank», где определяет соответствующий DSN. Установка для драйвера не имеет значения, за исключением того, что это не должно быть пустой строкой. Такая схема применима и для других программ.

Использование unixODBC с wine

Когда Crystal Reports запущен под WINE и использует ODBC, появляется сообщение о том, что строка соединения недопустима (сообщение об ошибке: «Unable to connect: Incorrect log on parameters»).

Дело в том, что Crystal Reports обращается к реестру Windows, чтобы найти там настройки драйвера для DSN в секции ODBC.INI реестра. Так как установка драйвера находится в файловой системе Linux, ничего хорошего он там не находит, что и приводит к ошибке.

Чтобы исправить положение надо ввести соответствующую запись в реестр. Новая запись может располагаться в дереве HKEY_CURRENT_USER или в HKEY_LOCAL_MACHINE и выглядит так: Software->ODBC->ODBC.INI-> -> Driver=»not blank», где определяет соответствующий DSN. Установка для драйвера не имеет значения, за исключением того, что это не должно быть пустой строкой. Такая схема применима и для других программ.

Установка PHP с unixODBC

Поддержка Apache DSO

Имеются два способа обхода проблемы. Необходимо определить и экспортировать следующие переменные среды перед формированием apache: Или пересоберите unixODBC без поддержки потоков, конфигурируя его так:

В обоих случаях не забывайте удалять файл config.cache из корневого каталога Apache или unixODBC

UnixODBC и 2000 год

Поскольку ничего из вышеупомянутой информации не сгенерировано кодом внутри unixODBC, каких бы то ни было проблем с 2000 годом в рамках кода unixODBC быть не должно. Могут быть сложности у конкретной СУБД или операционной системы, но они не имеют отношения к пакету unixODBC.

Библиотеки в unixODBC

INI-библиотека представляет собой библиотеку функций нужных, чтобы помочь в разработке кода для взаимодействия с INI-файлами. Будущая расширенная версия этой библиотеки скорее всего станет стандартной библиотекой Linux, что позволит рассматривать INI-файлы как стандартный формат новых файлов конфигурации в ОС Linux.

Log-библиотека представляет собой комплект функций нужных, чтобы создать средство регистрации событий. Это используется odbcinst и unixODBC Driver Manager. Планируется поддержка системы регистрации событий в UNIX.

List-библиотека представляет собой набор маленьких и простых функций для создания, управления и удаления связанных списков Эти функции служат, чтобы усилить код для работы связанных списков в unixODBC и обеспечить основу для поддержки курсора.

Библиотека odbcinst обеспечивает приложения и другие компоненты unixODBC способностью к чтению и записи системной информации ODBC. Причем неважно, как или где эта информация сохранена. Это осуществляет основной API из MS и добавляет несколько функций для удобства. Одно из таких расширений: добавление нескольких API для работы с ODBC-программами Config в среде KDE/Qt.

Библиотека Tree была создана, чтобы хранить анализируемый код SQL. Она также должна использоваться в будущих версиях, чтобы сохранить синтаксис SQL в намного более реалистичном виде.

Библиотека SQI реализует сильно облегченный обработчик SQL, который использует текстовые файлы для хранения данных. Это дополнено ODBC-драйвером, чтобы создать очень открытую СУБД для маленьких наборов данных. Строго рекомендуется, чтобы все использование SQI было сделано через ODBC-драйвер: это позволит источнику данных превратиться в нормальную СУБД без того, чтобы перетранслировать исходный код.

Разработка SQI управлялась желанием включить поддержку ODBC в KDE и в соответствии с необходимостью создания полноценной СУБД, чтобы позволить использование. SQI для этого вполне достаточна.

Читайте также:  Просмотр свойств сети windows 10 возможность подключения ipv4 отключен

Библиотека SQP представляет собой SQL-анализатор, основанный на lex/yacc. Это было выдрано из SQI так, чтобы общий анализатор SQL можно было бы обеспечивать для всех частей unixODBC, в частности, в драйверах и источниках данныхх, основанных не на SQL. Текущее понимание синтаксиса SQL очень ограничено, но это должно быть расширено в будущем.

Утилиты командной строки

odbcinst представляет собой инструмент, который был создан для помощи тем, кто разрабатывает скрипты и RPM-пакеты для драйверов, чтобы иметь возможность легко создавать и удалять записи в файлах odbc.ini и odbcinst.ini. Этот инструмент командной строки связан с разделяемой библиотекой (libodbcinst.so) и является частью компонента odbcinst в unixODBC.

isql представляет собой инструмент, который позволяет пользователю выполнять SQL-команды в пакете или в интерактивном режиме. Это имеет некоторые интересные опции типа опции, чтобы генерировать вывод, в виде таблицы на HTML.

Использование IBM DB2 с unixODBC

Сначала установите клиентский пакет доступа DB2 от IBM, это установит IBM CLI драйвер, который работает с unixODBC как ODBC-драйвер.

При использовании клиентского пакета доступа, определите клиентский доступ под неким именем, например, db2inst1, а затем создайте запись в файле odbcinst.ini: Параметр DontDLClose требуется, чтобы избежать проблемы в драйвере, когда он динамически загружен.

Теперь настройте файл odbc.ini примерно так: Затем, когда происходит соединение, Вы ДОЛЖНЫ ИМЕТЬ переменную среды DB2INSTANCE, установленную на корректный образец db2, например:

Версия 7.1

Единственое различие сводится к имени пакета, используемого для доступа. CLI-драйвер теперь должен быть найден в DB2 Personal Developer’s Edition V7.1.

Использование версии 7.1 формирует путь к библиотеке:

Вы также должны добавить «/usr/IBMdb2/V7.1/lib» в /etc/ld.so.conf.

Другая полезная подсказка. При использовании PHP+DB2 под AIX через unixODBC к IBM-серверу (4 процессора, мультиядра и т.д), возникало сильное замедление работы. Имеется ошибка в стеке TCP/IP IBM. После изучения странички http://www-4.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/document.d2w/report?last_page=list.d2w&fn=1006553 и выполнения команд был достигнут поистине огромный рост производительности (в десятки раз!).

unixODBC и Sybase/MS SQL Server

Введение

Этот документ поможет пользователям unixODBC обратиться к MS SQL Server, а также к Sybase SQL Server из клиентов unixODBC.

Будем считать, что Вы имеете недавнюю версию unixODBC на своей системе и где-то выполняется сервер. SQL Server должен позволять удаленный доступ и поддерживать соединения, использующие TCP/IP. Конечно, нужны также идентификатор для входа в систему и пароль.

Подготовка

MS SQL Server был порожден партнерством между Microsoft и Sybase. Впоследствии эти два сервера остались очень похожими. Фактически настолько похожими, что протокол связи, используемый клиентским программным обеспечением, чтобы связаться с этими серверами является фактически идентичным. Этот протокол называется Табличным Потоком Данных (Tabular Data Stream, сокращенно TDS).

Brian Bruns создал проект проект открытых исходных текстов, призванный обеспечить реализацию протокола TDS для всех желающих. Проект называется FreeTDS и может быть найден на сайте http://www.freetds.org.

Что с ним делать

FreeTDS приходит с несколькими интерфейсами TDS с ODBC. ODBC-драйвер, включенный в FreeTDS, работает хорошо для типичных запросов, типа запроса данных. Однако, этот ODBC-драйвер не поддерживает менее используемые функции каталога ODBC. FreeTDS хорошо работает с unixODBC, но Вы скачайте самую свежую версию, например, с ftp://ibiblio.org/pub/Linux/ALPHA/freetds.

Установка

Наиболее вероятно, что Вы скачали исходный текст, и этой точки зрения я буду придерживаться. Обычно установка из исходных текстов представляет собой проблему по причине отсутствия необходимых инструментов, но почти версии Linux их имеют. Распакуйте дистрибутив следующими командами: Как только Вы распаковали исходный текст, изучите файлы INSTALL и README.

Сначала определите некоторые переменные среды. Например, пользователь оболочки bash может добавлять следующее в свой файл /etc/profile.

Опции configure могут просматриваться, выполняя ./configure —help. Главное, должна быть указана опция выбора конфигурации —with-tdsver. Теперь соберем пакет и установим его:

Драйвер FreeTDS ODBC должен быть установлен в /usr/local/freetds/lib. Там должен появиться файл libtdsodbc.so.

Настройка

Регистрация SQL Server с TDS

FreeTDS должен знать несколько вещей относительно каждого сервера, с которым Вы хотите работать. Традиционно используется интерфейсный файл. FreeTDS может работать с файлом, называемым freetds.conf, но для упрощения примера применим старый метод. Файл интерфейсов может быть найден в каталоге /usr/local/freetds. Имеется пример для доступа к MS SQL Server: Под P450 здесь значится имя машины, на которой выполняется MS SQL Server. Имя может быть каким угодно. По умолчанию MS SQL Server слушает порт 1433.

Регистрация ODBC-драйвера через unixODBC

unixODBC должен знать ряд данных относительно всех ODBC-драйверов, которые Вы предполагаете использовать. Самый лучший способ этого достичь: применить графическую программу ODBCConfig, которая приходит с unixODBC. Альтернативный метод состоит в том, чтобы использовать команду odbcinst, которая также приходит с unixODBC. Мы сосредоточимся на использовании команды odbcinst. Создайте файл с именем tds.driver.template с несколькими строками, описывающими нужный драйвер:

Выполните odbcinst, предписывая ему создать запись драйвера, используя файл tds.driver.template. Обратите внимание, что Вы должны оставить пробел между параметром -f и именем файла шаблона:

Создание ODBC Data Source Name

Клиенты ODBC обычно будут работать с ODBC Data Source Names (DSN). Самый лучший способ создавать, редактировать и удалять DSN состоит в том, чтобы использовать инструмент ODBCConfig.

Снова мы используем команду odbcinst вместо него. Это делается потому, что программа ODBCConfig достаточно наглядна и понятна, но не все пользователи имеют установленные инструментальные средства unixODBC GUI. Снова начнем с создания файла-шаблона под именем tds.datasource.template, который содержит некоторые опции типа заданной по умолчанию базы данных и UID. Примечание: Вы будете использовать Ваш собственный Servername и UID:

Примечание: Servername не означает DNS-имя или IP-адрес сервера. Это должно соответствовать серверу из интерфейсного файла (в случае freetds.conf это значение между [], заголовок желательного раздела сервера).

Примечание: предыдущие команды выполнялись как root (обозначенный символом #), но теперь команда выполняется от имени обычного пользователя. Это значительно. Все пользователи системы совместно используют FreeTDS и ODBC-драйверы, но каждый пользователь имеет собственный список DSN (имеются исключения, но здесь они не актуальны). Так что создайте DSN как тот пользователь, который собирается использовать это:

unixODBC приходит с рядом инструментальных средств, которые позволяют Вам проверять работоспособность пакета. Используем инструмент командной строки isql. Он позволяет представлять на рассмотрение DSN команды (обычно это инструкции SQL) и принимать результаты:

Вы должны видеть сообщение о соединении и подсказку SQL. Если этого не наблюдается, либо проблема с конфигурацией, либо задана неправильная пара значений ID и PWD.

Теперь попробуйте простую команду SQL:

Шаблон драйвера

Создан шаблон драйвера, чтобы позволить программистам легко разрабатывать новые драйверы. Это содержит некоторые файлы типа make и все функциональные заголовки, требуемые для совместимости с ODBC 3.5.1. Некоторые функции имеют код, но большая часть оставлена для конкретной реализации.

Читайте также:  Твикер windows 10 топ

Типовые драйверы

Двоичная переносимость драйверов для Linux ODBC когда-нибудь будет достигнута, но ODBC пока довольно плохо реализован под Linux в это время, и некоторые драйверы могут иметь проблемы. Это явление постепенно должно уменьшится, поскольку ODBC становится более используемым на Linux.

Сертифицированные драйверы

СУБД Уровень ODBC Устанавливается в odbcdrivers.ini DriverConfig Замечания Поддержка
DB2 UDB для iSeries http://www-1.ibm.com/servers/eserver/iseries/access/linux 3.5 Да Да Имеется драйвер, доступный для систем Intel и для разделов iSeries, выполняющих Linux. Драйвер соответствует ODBC 3.5 ANSI со способностью сохранять и обрабатывать Unicode-данные. Поддерживает тип SQL_WCHAR Поддержка и закачка пакета: http://www-1.ibm.com/servers/eserver/iseries/access/linux
Microsoft SQL Server и Microsoft Access Вы можете использовать Bridge для работы с источником данных ODBC на Windows-машине http://www.easysoft.com/products/oob/main.phtml
DB2 http://www.ibm.com/db2 3.5 No No Библиотека libdb2.so, которая является частью набора DB Connect, работает как ODBC-драйвер Загрузить пакет можно с http://www-1.ibm.com/support/docview.wss?uid=swg21079056
Oracle http://www.oracle.com 3.5 Да Да Загрузка свободноой тестовой версии: http://www.easysoft.com support@easysoft.com news://news.easysoft.com/easysoft.public.oracle
Easysoft ODBC-ODBC Bridge от 2.0 до 3.5 Да Да http://www.easysoft.com/products/oob/main.phtml. Easysoft’s ODBC-ODBC Bridge (пробная бесплатная версия) обеспечивает удаленный доступ к любому ODBC-драйверу support@easysoft.com
news://news.easysoft.com/easysoft.public.da2k.odbc-odbc-bridge
http://www.easysoft.com
DB2 http://www.starquest.com 3.5 Нет данных Нет данных http://www.starquest.com : StarSQL для UNIX 3.10 и выше, Solaris, AIX и Linux www.starquest.com/support
Sybase http://www.sybase.com 3.5 Да Нет Бесплатная пробная версия доступна на http://www.easysoft.com support@easysoft.com
news://news.easysoft.com/easysoft.public.sybase
Informix http://www.informix.com 3.51 Нет Нет Драйвер от informix работает прекрасно, но Вы должны ознакомиться с сайтом разработчиков в плане свежей документации
AdabasD www.softwareag.com/adabasd 3.5 Нет Нет ODBC-драйвер для AdabasD доступен для Solaris, HP-UX, AIX, Linux и нескольких других типов unix. Подробности на сайте разработчика http://www.softwareag.com и в конференции comp.databases.adabas
Empress http://www.empress.com . . . . .
Postgres http://www.postgresql.org 2.5 . Да Была взята Win32-версия (не из дистрибутива сервера), и она нормально работала с unixODBC с небольшими изменениями. Изменения отправлены координаторам проекта PostgreSQL
MySQL http://www.mysql.com . . . Драйвер MyODBC (http://www.mysql.com/download.html) работает с unixODBC http://www.mysql.com
MiniSQL (он же mSQL) http://www.Hughes.com.au Смесь из различных уровней. Борется за достижение 3.51. Безуспешно Да Да Alpha-версия pharvey@codebydesign.com
SQI Очень ограниченные версии INSERT, SELECT, UPDATE и DELETE . Да (используются значения по умолчанию для файла) Text File Driver (alpha) pharvey@codebydesign.com
News Server Реализована минимальная функциональность ODBC. Сильно ограниченное, но очень полезное подмножество SQL . Да Расширенная версия Ke Jin’s Internet News Server ODBC-драйвера. News-серверы представляют собой источники данных, а группы новостей таблицы. pharvey@codebydesign.com
YARD SQL 3.5 Сайт проекта YARD (http://www.yard.de).
Interbase 3.5 Да Да Доступен для Windows, Linux Intel, Solaris, HPUX, AIX и OS X ftp://ftp.easysoft.com/pub/interbase
RDBMS Linter SQL 3.5 Да Да Оригинальный драйвер ODBC портирован на UNIX www.relex.ru, www.relexus.com
Ovrimos Webbase http://www.ovrimos.gr/download.php 3.5 Да Да http://www.ovrimos.gr/download.php support@ovrimos.com
Mimer SQL http://www.mimer.com 3.51 Нет данных Нет данных Посетите сайт www.mimer.com/developers для сбора дополнительной информации и загрузки пробной версии высокопроизводительной СУБД www.mimer.com/developers
Ingres http://www.cai.com 3.51 http://support.cai.com/techbases/ingres/4327.html
Sap DB http://www.sapdb.org 3.51

Установка и настройка Cold Fusion и Interbase под Linux

Как и что делалось:

  • 1. Под RH Linux 6.2 установлен UnixODBC 1.8.12 с применением для этой цели rpm-пакета с сайта Coding Apes ( http://grapeape.codingapes.com/unixODBC.xml). ODBC-диспетчер драйверов, обеспеченный ColdFusion, был заменен на диспетчер из UnixODBC:
  • 2. Под RH Linux 6.1 используйте исходный текст с сайта http://www.unixodbc.org. Если Вы не нуждаетесь в графических инструментальных средствах, а для серверов обычно их не ставят), выполните: Остальное подобно описанному выше.
  • 3. Конфигурируйте Interbase ODBC Driver, загрузите Interbase Driver с сайта Easysoft ( http://www.easysoft.com/products/interbase). Установите его, скопировав файлы в каталог /usr/local/lib. Теперь настройте Ваш файл odbc.ini в /opt/coldfusion/odbc/odbc.ini примерно так:

Получение ODBC-драйвера из Informix Client access или SDK, работающего с unixODBC

1. Установите переменную окружения INFORMIXDIR к корню Вашей установки Informix. Далее я считаю, что это /usr/local/informix.

2. Определите сервис online в файле /etc/services.

3. Создайте файл sqlhosts в каталоге $INFORMIXDIR/etc, который определяет все Ваши серверы базы данных.

4. Удостоверьтесь, что все библиотеки Informix найдены ld. Они размещены в каталоге $INFORMIXDIR/lib и его подкаталогах (это включает по крайней мере cli и esql). Обычно следует включить каталоги с библиотеками в файл /etc/ld.so.conf и выполнить команду ldconfig от имени root.

5. Определите переменную окружения ODBCINI, чтобы указать на Ваш системный файл odbc.ini, например: export ODBCINI=/etc/odbc.ini. Дело в том, что эта переменная представляет собой единственный способ управлять тем, где драйвер Informix ищет сведения о конфигурации.

6. Добавьте драйвер Informix в odbcinst.ini без пробелов между именами параметров и их значениями, например:

7. Определите Informix DSN в odbc.ini:

8. Теперь попробуйте выполнить тестовую команду isql miecr.

Если Вы получаете ошибку «Server %s is not listed as a dbserver name in sqlhosts», это, вероятно, вызвано пробелами в определении драйвера Informix в файле odbcinst.ini или в записи DSN в файле odbc.ini. Синтаксический анализатор драйвера очень легко ошибается.

Откуда и что можно скачать
Формат дистрибутива

unixODBC на сегодня доступен в формате tar+gzip. Это означает, что Вы должны:

Скопировать файл unixODBC*.tar.gz в нужный Вам каталог.

Распаковать его, например, командами:

Выполнение этих команд создаст каталог unixODBC со всеми исходными файлами внутри.

На момент написания данной работы последней версией была 2.2.6 (архив назывался unixODBC-2.2.6.tar.gz).

В настоящее время на сайте CodingApes ( http://grapeape.codingapes.com) выложено несколько RPM-пакетов. Их также можно найти на http://edas.visaci.cz/en/unixodbc. RPM-пакеты для использования с версиями 7.0 и 8.0 Connectiva Linux (http://www.conectiva.com можно взять на. http://www.andrefelipemachado.hpg.com.br/linux/index.html.

Версия для FreeBSD

Nick Sayer создал порт unixODBC для FreeBSD. Ее можно найти на сайте http://www.freebsd.org/ports.

Публичный доступ к CVS access также доступен для всех желающих работать с самыми последними исходными текстами. CVS-доступ есть на http://sourceforge.net/cvs/?group_id=1544.

Так что Вы можете использовать следующие команды, Когда будет запрошен пароль для anonymous, просто нажмите клавишу Enter:

Чтобы сформировать пакет из архива CVS, выполните следующую команду:

Это будет формировать скрипт configure.

Чтобы сформировать пакет из CVS, Вы нуждаетесь в некоторых инструментальных средствах:

  • automake 1.5
  • libtool 1.4.2

Они могут быть найдены на web-сайте проекта GNU http://www.gnu.org или на его многоичисленных зеркалах.

Построение библиотек и программ

Установка теперь использует стандартный процесс GNU autoconf. Скомандуйте:

По умолчанию файлы будут установлены в каталог /usr/local. Как и положено с configure, это расположение может быть изменено опцией prefix: Это установит каталоги в /usr/local/unixODBC.

Чтобы соответствовать руководящим принципам GNU, файл odbcinst теперь установлен по умолчанию в /etc, что может быть изменено, используя опцию —sysconfdir в вызове configure. Чтобы устанавливать файлы в старое место, надо указать:

Скрипт будет пытаться находить каталоги, которые необходимы для компонентов GUI, и если они не найдены (то есть, Вы не установили QT), построение пакета продолжится, но без частей GUI.

Компоненты GUI (ODBCConfig и DataManager) требуют Qt не ниже 2.2 ( http://www.troll.no/dl/qtfree-dl.html).

Библиотека SQI требует flex и yacc, чтобы анализировать команды SQL.

Дистрибутив в целом зависит от наличия многих из стандартных инструментальных средств разработки, типа компилятора C/C++ (в настоящее время протестирован egcs).

Начинка unixODBC

Data Flow Diagram (DFD) описывает все ключевые компоненты в окружении Linux ODBC. DFD пронумерована так, чтобы показать, что происходит при соединении с системой базы данных.

1. Приложение вызывает функцию (SQLAllocEnv, SQLAllocConnect, SQLConnect) из DriverManager.

2. DriverManager отвечает на SQLConnect драйвером базы данных, который соответствует заданному источнику данных (Data Source Name, DSN).

3. DriverManager загружает драйвер базы данных и просит, чтобы он установил связь с СУБД.

4. Драйвер базы данных может быть должен получить дополнительные опции из DSN, что выполняется им по ходу дела.

5. Драйвер базы данных использует специфическое для конкретной СУБД обращение, чтобы соединиться с базой данных.

Файл odbc.ini

ОБРАТИТЕ ВНИМАНИЕ: файлы odbc.ini и odbcinst.ini являются системной информацией ODBC. Весь доступ (чтение или запись) к этой информации должен проходить через DriverManager или разделяемую библиотеку ODBCINST. Не обращайтесь к этим INI-файлам непосредственно!

Файл odbc.ini хранит список источников данных и любых параметров для каждого из них. Имеются два типа файлов odbc.ini: системный (/etc/odbc.ini) и пользовательский (

/.odbc.ini). По умолчанию, DriverManager будет искать источники данных, используя следующую схему;

1. Используя переменную окружения, чтобы указать путь к пользовательскому файлу odbc.ini. Например, ODBCINI+/.odbc.ini.

2. Используя домашний каталог, заданный в файле /etc/passwd, чтобы найти путь для .odbc.ini.

3. Используя системный файл odbc.ini, который расположен в /etc/odbc.ini.

Файлы odbc.ini предоставляют те же самые функциональные возможности за исключением того, что системные сервисы могут принимать более высокий уровень защиты на системном odbc.ini. Во всем остальном пользовательские и системные файлы совершенно равны.

ini-файлы используют те же самые требования к синтаксису. Имена источников данных охвачены квадратными скобками. Параметры следуют в последующих строках и используют формат PropertyName=PropertyValue. Например;

Каждое имя источника данных должно иметь, по крайней мере, определенный параметр driver. Это позволит DriverManager загружать драйвер, когда сделан запрос на соединение. Единственые параметры, с которыми работает сам DriverManager: DRIVER, TRACEFILE и TRACE. Другие параметры будут интерпретироваться уже драйвером. Секция [ODBC Data Sources] поддерживается в каждом файле odbc.ini.

Файл odbcinst.ini

Этот ini-файл просто перечисляет все установленные драйверы. Синтаксис прост: имя, сопровождаемое параметром, который сообщает имя файла драйвера:

Имя файла драйвера (в данном случае /usr/lib/libsybase.so.11) должно быть уникально. Дружественное имя (то есть Sybase 11) также должно быть уникально.

Параметр Setup указывает на общедоступную (разделяемую) библиотеку, содержащую функции, которые нужно вызвать ODBC Config. ODBC Config вызовет эту библиотеку, чтобы получить специфические для конкретного драйвера имена параметров в ходе конфигурации источника данных. Если программа ODBC Config не может найти или использовать этот файл, она примет некоторые значения по умолчанию. Этот файл должен изменяться только разделяемой библиотекой ODBCINST или утилитой командной строки odbcinst.

Графическое наполнение

Спецификации ODBC включают два случая, в которых GUI был бы особенно полезен. Проект LinuxODBC находится в процессе реализации GUI для обоих случаев. Случаи это такие:

ODBC Config должен позволить пользователю настроить параметры, специфичные для конкретного драйвера. В MS это обработано через ODBC Admin, вызывающий драйвер и передающий ему дальнейшую инициативу. LinuxODBC не будет вынуждать драйвер делать такую работу. Вместо этого, ODBC Config вызовет библиотеку Drivers Setup, чтобы получить простой список реквизитов. ODBC Config обработает представление и сохранение этих реквизитов. Этот подход делает создание библиотек Driver Setup ОЧЕНЬ простым потому, что они должны обеспечить только список опций.

DriverManager, вероятно, придется запрашивать пользователя относительно большего количества информации для входа в систему. С поддержкой графики это вполне реально.

unixODBC без GUI

Много людей используют unixODBC, но по ряду причин не формируют конфигурацию GUI и соответствующие утилиты (ODBCConfig и DataManager).

Что такое ini-файл?

ODBC сначала появился внутри Windows 3.0. В это время Windows использовала .ini-файлы, чтобы хранить информацию о конфигурации. Это текстовые файлы, содержащие данные в следующем формате:

С появлением Windows NT, эти ini-файлы были заменены реестром, но API, чтобы обратиться к ним из ODBC, остался тем же самый. Windows имеет две функции в odbcinst.dll, которые позволяют приложениям и драйверам сделать запрос и изменять эти файлы: SQLGetPrivateProfileString и SQLPutPrivateProfileString.

Как часть репродуцирования ODBC-среды на платформах не-Windows, unixODBC обеспечивает тот же самый формат ini-файлов и функциональные возможности с помощью библиотеки libodbcinst.

Система и пользователь

ODBC делает различие между двумя типами ini-файлов. Системные ini-файлы разработаны, чтобы быть доступными, но не изменяемыми любым пользователем, а ini-файлы пользователя относятся только к какому-то специфическому пользователю и могут изменяться им.

Системные ini-файлы: odbcinst.ini и odbc.ini (внимание: точек в начале имени нет!), а пользовательский:

/.odbc.ini в домашнем каталоге пользователя (вот этот уже с точкой: скрытый).

Системный файл odbcinst.ini хранит информацию относительно ODBC-драйверов, доступных всем пользователям, а файл odbc.ini содержит информацию относительно DSN, доступных всем пользователям. Эти системные DSN полезны для приложения типа web-серверов, которые не могут выполняться как реальный пользователь и соответственно не будут иметь домашнего каталога, чтобы хранить в нем файл .odbc.ini.

Хороший пример этого: Apache и PHP с поддержкой ODBC. Когда http-сервер запущен, он от имени root вызывает SQLAllocEnv. Позже он меняет свою принадлежность на иного пользователя и вызывает SQLConnect. Если DSN не является системным, сервер потерпит неудачу.

FILEDSN

ODBC 3 также имеет третий сорт DSN, файловый DSN. Они сохраняют информацию соединения в файле, который может быть доступен любому пользователю. UnixODBC в настоящее время не поддерживает файловый DSN, но такая поддержка планируется в ближайшее время, поскольку такой тип DSN весьма полезен. Он больше распространен в NT, чем в UNIX по причине того, такие файлы позволяют хранить данные на центральном сервере, который является доступным всем рабочим станциям, что избавляет от настройки всех систем сразу.

Почему не vi?

Все файлы конфигурации, необходимые unixODBC представляют собой простые текстовые файлы, так что не имеется никакой причины, из-за которой Вы не можете использовать Ваш любимый текстовый редактор для правки файлы.

Однако, начиная с версии beta 1.6, расположение системных файлов odbcinst.ini и odbc.ini определено скриптом выбора конфигурации. Заданное по умолчанию расположение: /usr/local/etc, и если префикс определен, расположение будет /etc. Расположение системных файлов можно поменять и радикально указанием опции —sysconfdir=DIR, например, для обратной совместимости с версиями до pre 1.6 попробуйте:

Что входит в эти файлы?

odbcinst.ini

Шаблоны

-i Установить
-d драйвер
-f имя файла с шаблоном

Потоки

[.]odbc.ini

Это может быть записано в файл шаблона и вставлено в ini-файле для текущего (актуального) пользователя командой:

Источник

Читайте также:  Android sdk для windows installer
Оцените статью