Ищете хорошую документацию по файлам odbc.ini и odbcinst.ini в Linux

11

Я видел частичную информацию, старую информацию, но ничего лучше, чем настоящие примеры файлов с краткими комментариями, которые есть у меня на месте.

Мне нужно понять точные отношения между odbc.iniи odbcinst.ini. Внешне это довольно очевидно - в верхней части odbc.iniфайла есть такой раздел:

[ODBC Data Sources]
MYDSN = MyDriverName
...

Однако я не уверен, могу ли я, например, иметь настройки либо в драйвере, либо в разделе DSN.

1) У меня есть строка Driver = /path/to/file/.soв обоих файлах и значения иногда отличаются. Имеет ли это смысл? Если так, что преобладает?

2) Является odbcinst.iniли JavaScript-подобный «прототип» для odbc.ini? Другими словами, если я создаю несколько DSN с общими настройками, могу ли я распространять общие настройки из odbc.iniв odbcinst.ini?

3) В чем разница между Driverи Setupв odbcinst.ini? Кажется, они имеют одинаковые значения. Являются ли эти настройки базой данных или они универсальны?

Леонид
источник
unixodbc.org/doc
Персидский залив
Я думаю, что ссылка выше поможет ответить. Подумайте об этом, если вы сконфигурируете файл odbc.ini для источника данных ORACLE, как система узнает, что такое ORACLE, это то, что определяет odbcinst.ini. Это может быть только локально для определенного набора путей / программного обеспечения, а не "для всей системы".
Шруте

Ответы:

9

Я использую FreeTDSна Debianсоединить phpуправляемое общество сайта в MS-SQL Server 2005базу данных.

Объяснение, которое я могу дать файлам конфигурации:

/etc/odbc.ini

Содержит экземпляр, на который ссылается обработчик (например php), который подключается к базе данных (см. Пример ниже). Конфигурация определяет сервер, к которому нужно подключиться.

[freetds_odbc_connection]
Driver          =       FreeTDS
Description     =       test
Database        =       MyCompanyDb
Server          =       frodo
Readonly        =       Yes
Port            =       1433
Trace           =       No

-

/etc/odbcinst.ini

Содержит конфигурацию для Driverраздела в odbc.ini.

[FreeTDS]
Description     = TDS connection
Driver          = /usr/lib/odbc/libtdsodbc.so
Setup           = /usr/lib/odbc/libtdsS.so
UsageCount      = 1
FileUsage       = 1
Trace           = Yes
TraceFile       = /tmp/odbcinst_tr

-

show-companies.php

Пример phpкода, демонстрирующий, как я настраиваю и использую соединение.

  $host="freetds_odbc_connection";
  $user="freetds";
  $password="secretpassword";
  $conn_id = odbc_connect($host, $user ,$password) or die (odbc_errormsg());

  $sql_companies =  "SELECT * from AMGR_Client_Tbl WHERE Record_Type='1'";

  $query_companies = odbc_exec($conn_id, $sql_companies);
  while (odbc_fetch_row($query_companies))
  {
    $client_id     = odbc_result($query_companies, 6);
    $company_name  = odbc_result($query_companies, 9);
  }

и т.д .. и т.д ..

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

CAPTCHA,
источник
4

Если вы посмотрите только на реализации Unix, вы получите интересные идеи о том, как работает ODBC. Ни одна из этих реализаций не на 100% сопоставима с эталонной реализацией в Windows, созданной разработчиком спецификации ODBC, то есть Microsoft .

В Unix обычно есть два менеджера драйверов ODBC. iODBC , чья документация по данному вопросу находится здесь , поддерживается и поддерживается моим работодателем. UnixODBC другой, и обсуждался в других ответах. Предполагается, что они эквивалентны API друг другу и реализации Windows, так как обе являются реализациями стандарта, не зависящими от платформы.

Проще говоря, odbcinst.iniэто файл реестра и конфигурации для драйверов ODBC в среде, а odbc.iniтакже файл реестра и конфигурации для DSN ODBC (имен источников данных), обычно основанный на драйверах, зарегистрированных в другой.

У вас было несколько конкретных вопросов ...

1) У меня есть строка Driver = /path/to/file/.soв обоих файлах и значения иногда отличаются. Имеет ли это смысл? Если так, что преобладает?

Как Driver = /path/to/file.soправило, они должны быть одинаковыми в обоих файлах, когда оба выражены как пути. В odbc.ini, эта запись может вместо того, Driver = {name of driver}где имя, как указано в odbcinst.ini. Вообще говоря, настройки odbc.iniпреобладают над конфликтующими настройками, odbcinst.iniесли таковые существуют.

2) Является odbcinst.iniли JavaScript-подобный «прототип» для odbc.ini? Другими словами, если я создаю несколько DSN с общими настройками, могу ли я распространять общие настройки из odbc.iniв odbcinst.ini?

Нет, odbcinst.iniэто не «прототип» в этом смысле. odbcinst.iniнастройки относятся к драйверу , но не относятся к DSN на основе этого драйвера.

3) В чем разница между Driverи Setupв odbcinst.ini? Кажется, они имеют одинаковые значения. Являются ли эти настройки базой данных или они универсальны?

В odbcinst.ini, то Driver =обращается к библиотеке драйверов, а также Setup =в библиотеке настройки. Последнее совершенно необязательно, и когда оно существует, его можно, но не обязательно, использовать во время соединения для передачи данных; он в первую очередь предназначен для использования администратором ODBC при «настройке» таких соединений, чтобы быть сохраненным как DSN. Иногда эти библиотеки находятся в одном и том же физическом файле, но это не обязательно, и, например, они обычно не находятся в среде OS X.

TallTed
источник
1

Хорошо, простая разница между odbcinst.ini и odbc.ini с сайта unixodbc, который является первым хитом в Google:

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

Ахмед Масуд
источник
Благодарю. Я забыл упомянуть, что на основании этого синтаксиса я сделал вывод, что каждый DSN должен указывать драйвер в самом верху odbc.ini с синтаксисом {DSN} = {Driver}, но я все еще в замешательстве.
Леонид
0

Руководства должны быть здесь (нажмите Manualsзатем User Manual). Но, к сожалению, ссылки для Administrator Manualи не Programmer Manualработают. (Я сообщил об этом и мне сказали, что они будут исправлены.)

Итак, пока ...

Недостающие руководства можно найти, загрузив unixODBC-2.3.4.tar.gz с http://www.unixodbc.org/, а затем откройте его с помощью менеджера архивов (или подобного) и посмотрите на эти три руководства:

/doc/AdministratorManual/index.html
/doc/ProgrammerManual/index.html
/doc/ProgrammerManual/Tutorial/index.html
Эллиптический вид
источник