Poszukuję dobrej dokumentacji plików odbc.ini i odbcinst.ini w systemie Linux

11

Widziałem częściowe informacje, stare informacje, ale nic tak dobrego jak rzeczywiste przykładowe pliki z krótkimi komentarzami, które mam lokalnie.

Muszę zrozumieć dokładny związek między odbc.inii odbcinst.ini. Pozornie jest to dość oczywiste - u góry odbc.inipliku znajduje się sekcja taka jak:

[ODBC Data Sources]
MYDSN = MyDriverName
...

Nie jestem jednak pewien, czy mogę na przykład mieć ustawienia w sekcji sterownika lub DSN.

1) Mam linię Driver = /path/to/file/.sow obu plikach, a wartości czasami się różnią. Czy to w ogóle ma sens? Jeśli tak, co przeważa?

2) Czy odbcinst.ini„prototyp” przypomina JavaScript odbc.ini? Innymi słowy, jeśli tworzę wiele DSN o wspólnych ustawieniach, czy mogę promować wspólne ustawienia od odbc.inido odbcinst.ini?

3) Jaka jest różnica pomiędzy Driveri Setupw odbcinst.ini? Wydają się mieć te same wartości. Czy te ustawienia są specyficzne dla bazy danych, czy są uniwersalne?

Leonid
źródło
unixodbc.org/doc
PersianGulf
Myślę, że powyższy link pomógłby odpowiedzieć. Pomyśl o tym, jeśli skonfigurujesz plik odbc.ini dla źródła danych ORACLE, skąd system wie, co to jest ORACLE, to właśnie definiuje odbcinst.ini. Może to być po prostu lokalne dla określonego zestawu ścieżek / oprogramowania, zamiast „całego systemu”.
Schrute

Odpowiedzi:

9

Używam FreeTDSna, Debianaby połączyć phpstronę internetową z MS-SQL Server 2005bazą danych.

Wyjaśnienie, które mogę podać plikom konfiguracyjnym:

/etc/odbc.ini

Przechowuje instancję, do której odwołuje się moduł obsługi (np. php), Który łączy się z bazą danych (patrz przykład poniżej). Konfiguracja określa serwer, z którym musi się połączyć.

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

-

/etc/odbcinst.ini

Przechowuje konfigurację dla Driversekcji w 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

Przykładowy phpkod pokazujący, jak skonfigurować i korzystać z połączenia.

  $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);
  }

itd itd..

Jestem pewien, że istnieje wiele innych zmiennych, które można ustawić i używać, ale jest to najprostsze wyjaśnienie, jakie mogę podać na temat plików, o które pytałeś.

captcha
źródło
4

Jeśli spojrzysz tylko na implementacje Uniksa, zobaczysz kilka interesujących pomysłów na temat działania ODBC. Żadna z tych implementacji nie jest w 100% porównywalna z referencyjną implementacją w systemie Windows, wyprodukowaną przez opiekuna specyfikacji ODBC, tj . Microsoft .

Istnieją dwa menedżery sterowników ODBC powszechnie spotykane w Uniksie. iODBC , którego dokumentacja dotycząca tego pytania znajduje się tutaj , jest prowadzona i wspierana przez mojego pracodawcę. UnixODBC jest drugim i został omówiony w innych odpowiedziach. Mają one być interfejsami API równoważnymi sobie nawzajem i implementacji systemu Windows, ponieważ oba są implementacjami standardu niezależnymi od platformy.

Mówiąc najprościej, odbcinst.inijest plikiem rejestru i konfiguracji dla sterowników ODBC w środowisku, podczas gdy odbc.inijest plikiem rejestru i konfiguracji dla DSN ODBC (Nazwy źródeł danych), zwykle opartych na sterownikach zarejestrowanych w innym.

Miałeś kilka szczegółowych pytań ...

1) Mam linię Driver = /path/to/file/.sow obu plikach, a wartości czasami się różnią. Czy to w ogóle ma sens? Jeśli tak, co przeważa?

Driver = /path/to/file.soOgół powinna być taka sama w obu plików, gdy obie są wyrażone jako ścieżki. W odbc.initym wpisie może zamiast tego znajdować Driver = {name of driver}się nazwa indeksu odbcinst.ini. Ogólnie mówiąc, ustawienia odbc.inimają pierwszeństwo przed ustawieniami sprzecznymi, odbcinst.inijeśli takie istnieją.

2) Czy odbcinst.ini„prototyp” przypomina JavaScript odbc.ini? Innymi słowy, jeśli tworzę wiele DSN o wspólnych ustawieniach, czy mogę promować wspólne ustawienia od odbc.inido odbcinst.ini?

Nie, odbcinst.ininie jest w ten sposób „prototypem”. odbcinst.iniustawienia odnoszą się do sterownika , ale nie do DSN opartych na tym sterowniku.

3) Jaka jest różnica pomiędzy Driveri Setupw odbcinst.ini? Wydają się mieć te same wartości. Czy te ustawienia są specyficzne dla bazy danych, czy są uniwersalne?

W odbcinst.iniThe Driver =odnosi się do biblioteki sterownika, a Setup =do biblioteki konfiguracji. Ten ostatni jest całkowicie opcjonalny, a gdy już istnieje, może, ale nie musi, być używany podczas połączenia danych; jest przeznaczony przede wszystkim do użytku przez administratora ODBC podczas „konfigurowania” takich połączeń, które mają być zapisane jako DSN. Czasami biblioteki te znajdują się w tym samym pliku fizycznym, ale nie muszą, i na przykład zazwyczaj nie znajdują się w środowisku OS X.

TallTed
źródło
1

Dobra prosta różnica między odbcinst.ini i odbc.ini ze strony unixodbc, która jest pierwszym hitem w Google:

Plik systemowy odbcinst.ini zawiera informacje o sterownikach ODBC dostępnych dla wszystkich użytkowników, a plik odbc.ini zawiera informacje o DSN dostępnych dla wszystkich użytkowników. Te „systemowe DSN” są przydatne w aplikacjach, takich jak serwery sieciowe, które mogą nie działać jako rzeczywisty użytkownik, a zatem nie będą miały katalogu domowego zawierającego plik .odbc.ini.

Ahmed Masud
źródło
Dzięki. Zapomniałem wspomnieć, że wywnioskowałem tak wiele ze składni - faktycznie każda DSN musi określać sterownik na samej górze pliku odbc.ini ze składnią {DSN} = {Driver}, ale nadal jestem bardzo zdezorientowany.
Leonid,
0

Instrukcje powinny być tutaj (kliknij Manualswtedy User Manual). Ale niestety linki do Administrator Manuali Programmer Manualsą zepsute. (Zgłosiłem to i powiedziano mi, że zostaną naprawione).

Więc na razie ...

Brakujące instrukcje można znaleźć, pobierając plik unixODBC-2.3.4.tar.gz ze strony http://www.unixodbc.org/, a następnie otwórz go za pomocą menedżera archiwów (lub podobnego) i spójrz na te trzy instrukcje:

/doc/AdministratorManual/index.html
/doc/ProgrammerManual/index.html
/doc/ProgrammerManual/Tutorial/index.html
Widok eliptyczny
źródło