Mencari dokumentasi yang bagus untuk file odbc.ini dan odbcinst.ini di Linux

11

Saya melihat informasi parsial, informasi lama, tetapi tidak ada yang sebagus file sampel aktual dengan komentar singkat yang saya miliki secara lokal.

Saya perlu memahami hubungan yang tepat antara odbc.inidan odbcinst.ini. Secara dangkal sangat jelas - di bagian atas odbc.inifile ada bagian seperti:

[ODBC Data Sources]
MYDSN = MyDriverName
...

Namun, saya tidak yakin apakah saya dapat, misalnya, memiliki pengaturan di bagian driver atau DSN.

1) Saya memiliki garis Driver = /path/to/file/.sodi kedua file dan nilainya terkadang berbeda. Apakah ini masuk akal? Jika demikian, mana yang berlaku?

2) Apakah odbcinst.ini"prototipe" seperti JavaScript dibuat untuk odbc.ini? Dengan kata lain, jika saya menciptakan sejumlah DSNs dengan pengaturan umum, dapat saya mempromosikan pengaturan umum dari odbc.inidalam odbcinst.ini?

3) Apa perbedaan antara Driverdan Setupdi dalam odbcinst.ini? Mereka tampaknya memiliki nilai yang sama. Apakah pengaturan ini khusus untuk database atau universal?

Leonid
sumber
unixodbc.org/doc
PersianGulf
Saya pikir tautan di atas akan membantu menjawab. Pikirkan tentang hal ini, jika Anda mengkonfigurasi file odbc.ini untuk sumber data ORACLE, bagaimana sistem mengetahui apa itu ORACLE, ini adalah apa yang didefinisikan oleh odbcinst.ini. Ini bisa saja lokal untuk set path / perangkat lunak tertentu, bukan "sistem lebar".
Schrute

Jawaban:

9

Saya menggunakan FreeTDSpada Debianuntuk menghubungkan phpsitus-driven ke MS-SQL Server 2005database.

Penjelasan yang bisa saya berikan ke file konfigurasi:

/etc/odbc.ini

Memegang instance yang dirujuk dalam handler (mis. php) Yang terhubung ke database (lihat contoh di bawah). Konfigurasi menentukan server yang harus disambungkan.

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

-

/etc/odbcinst.ini

Tahan konfigurasi untuk Driverbagian dalam 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

phpKode contoh untuk menunjukkan bagaimana saya mengatur dan menggunakan koneksi.

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

dll .. dll ..

Saya yakin ada banyak variabel lain yang dapat diatur dan digunakan tetapi ini adalah penjelasan paling sederhana yang dapat saya berikan dari file yang Anda tanyakan.

captcha
sumber
4

Jika Anda hanya melihat implementasi Unix, Anda akan mendapatkan beberapa ide menarik tentang cara kerja ODBC. Tidak satu pun dari implementasi ini yang 100% dapat dibandingkan dengan implementasi referensi pada Windows, diproduksi oleh pengelola spec ODBC, yaitu Microsoft .

Ada dua manajer driver ODBC yang biasa ditemukan di Unix. iODBC , yang dokumentasinya relevan dengan pertanyaan ini ada di sini , dikelola dan didukung oleh majikan saya. UnixODBC adalah yang lain, dan dibahas dalam jawaban lain. Ini dimaksudkan untuk menjadi setara API satu sama lain dan untuk implementasi Windows, karena keduanya merupakan implementasi platform-agnostik dari standar.

Secara sederhana, odbcinst.iniadalah file registri dan konfigurasi untuk driver ODBC di lingkungan, sedangkan odbc.inifile registri dan konfigurasi untuk ODBC DSN (Nama Sumber Data), biasanya berdasarkan driver yang terdaftar di yang lain.

Anda punya beberapa pertanyaan spesifik ...

1) Saya memiliki garis Driver = /path/to/file/.sodi kedua file dan nilainya terkadang berbeda. Apakah ini masuk akal? Jika demikian, mana yang berlaku?

The Driver = /path/to/file.soumumnya harus sama di kedua file ketika keduanya dinyatakan sebagai jalur. Di odbc.ini, entri ini sebagai gantinya di Driver = {name of driver}mana nama tersebut diindeks odbcinst.ini. Secara umum, pengaturan di odbc.inimenang atas pengaturan yang bertentangan di odbcinst.inijika ada.

2) Apakah odbcinst.ini"prototipe" seperti JavaScript dibuat untuk odbc.ini? Dengan kata lain, jika saya menciptakan sejumlah DSNs dengan pengaturan umum, dapat saya mempromosikan pengaturan umum dari odbc.inidalam odbcinst.ini?

Tidak, odbcinst.inibukan "prototipe" dengan cara ini. odbcinst.inipengaturan relevan untuk driver , tetapi tidak untuk DSN berdasarkan driver itu.

3) Apa perbedaan antara Driverdan Setupdi dalam odbcinst.ini? Mereka tampaknya memiliki nilai yang sama. Apakah pengaturan ini khusus untuk database atau universal?

Di odbcinst.ini, Driver =merujuk ke pustaka driver, dan Setup =ke pustaka pengaturan. Yang terakhir ini sepenuhnya opsional, dan jika memang ada, mungkin tetapi tidak perlu digunakan selama koneksi data; itu terutama dimaksudkan untuk digunakan oleh Administrator ODBC ketika "mengatur" koneksi seperti itu, untuk disimpan sebagai DSN. Kadang-kadang, pustaka ini ditemukan dalam file fisik yang sama, tetapi tidak harus, dan, misalnya, biasanya tidak ada di lingkungan OS X.

TallTed
sumber
1

Oke perbedaan sederhana antara odbcinst.ini dan odbc.ini dari situs unixodbc yang merupakan hit pertama di google:

File sistem odbcinst.ini berisi informasi tentang driver ODBC yang tersedia untuk semua pengguna, dan file odbc.ini berisi informasi tentang DSN tersedia untuk semua pengguna. "Sistem DSN" ini berguna untuk aplikasi seperti server web yang mungkin tidak berjalan sebagai pengguna nyata sehingga tidak akan memiliki direktori home untuk memuat file .odbc.ini.

Ahmed Masud
sumber
Terima kasih. Saya lupa menyebutkan bahwa saya menyimpulkan sebanyak itu dari sintaksis - memang setiap DSN harus menentukan driver di bagian paling atas odbc.ini dengan sintaks {DSN} = {Driver} tapi saya masih bingung.
Leonid
0

Manual seharusnya ada di sini (klik Manualskemudian User Manual). Namun sayangnya tautan untuk Administrator Manualdan Programmer Manualyang rusak. (Saya telah melaporkan ini dan diberi tahu bahwa mereka akan diperbaiki.)

Jadi untuk sekarang ...

Manual yang hilang ditemukan dengan mengunduh unixODBC-2.3.4.tar.gz dari http://www.unixodbc.org/ dan kemudian membukanya dengan manajer arsip (atau sejenisnya) dan melihat tiga manual ini:

/doc/AdministratorManual/index.html
/doc/ProgrammerManual/index.html
/doc/ProgrammerManual/Tutorial/index.html
Pandangan elips
sumber