web-dev-qa-db-ja.com

Linuxでのodbc.iniおよびodbcinst.iniファイルの適切なドキュメントを探す

部分的な情報、古い情報を見ましたが、ローカルにある短いコメント付きの実際のサンプルファイルほど優れていません。

odbc.iniodbcinst.iniの正確な関係を理解する必要があります。表面的にはそれはかなり明白です-odbc.iniファイルの上部に次のようなセクションがあります:

[ODBC Data Sources]
MYDSN = MyDriverName
...

ただし、たとえば、ドライバーまたはDSNセクションのいずれかで設定を行うことができるかどうかはわかりません。

1)両方のファイルにDriver = /path/to/file/.soという行があり、値が異なる場合があります。これは理にかなっていますか?もしそうなら、どちらが優勢ですか?

2)odbcinst.iniodbc.iniのJavaScriptに似た「プロトタイプ」ですか?つまり、共通の設定を使用して多数のDSNを作成している場合、odbc.iniからodbcinst.iniに共通の設定を昇格できますか?

3)odbcinst.iniDriverSetupの違いは何ですか?それらは同じ値を持っているようです。これらの設定はデータベース固有ですか、それともユニバーサルですか?

11
Leonid

FreeTDSDebianを使用して、php駆動のWebサイトを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

odbc.iniDriverセクションの構成を保持します。

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

など。

設定して使用できる変数は他にもたくさんあると思いますが、これはあなたが尋ねたファイルについて私が与えることができる最も簡単な説明です。

9
captcha

Unixの実装だけを見ると、ODBCがどのように機能するかについて興味深いアイデアが得られます。これらの実装はいずれも、Windowsのリファレンス実装と100%比較できません。 ODBC仕様、つまりMicrosoft

2つのODBC Unixで一般的に見られるドライバマネージャーがあります。 iODBC で、この この質問に関連するドキュメントはここにあります 私の雇用主 nixODBC はもう一方であり、他の回答で議論されました。どちらも標準のプラットフォームに依存しない実装であるため、これらは互いに、およびWindows実装と同等のAPIであることを意味します。

簡単に言えば、odbcinst.iniはODBC環境内のドライバのレジストリおよび構成ファイルであり、odbc.iniはODBC DSN(データソース名)。通常、他に登録されているドライバーに基づいています。

特定の質問がいくつかありました...

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.iniodbc.iniのJavaScriptに似た「プロトタイプ」ですか?つまり、共通の設定を使用して多数のDSNを作成している場合、odbc.iniからodbcinst.iniに共通の設定を昇格できますか?

いいえ、odbcinst.iniはこのように「プロトタイプ」ではありません。 odbcinst.ini設定はドライバーに関連しますが、そのドライバーに基づくDSNには関連しません。

3)odbcinst.iniDriverSetupの違いは何ですか?それらは同じ値を持っているようです。これらの設定はデータベース固有ですか、それともユニバーサルですか?

odbcinst.iniでは、Driver =はドライバーライブラリを参照し、Setup =はセットアップライブラリを参照します。後者は完全にオプションであり、存在する場合は、データ接続中に使用する必要がありますが、使用する必要はありません。これは主に、ODBC管理者がこのような接続を「設定」するときにDSNとして保存するために使用することを目的としています。これらのライブラリが同じ物理ファイルにある場合もありますが、 、たとえば、通常、OS X環境にはありません。

4
TallTed

グーグルの最初のヒットである nixodbc サイトからのodbcinst.iniとodbc.iniの単純な違いはわかりました:

システムファイルodbcinst.iniには、すべてのユーザーが利用できるODBCドライバに関する情報が含まれています。odbc.iniファイルには、すべてのユーザーが利用できるDSNに関する情報が含まれています。これらの「システムDSN」は、実際のユーザーとして実行されていない可能性があるため、.odbc.iniファイルを含むホームディレクトリがないWebサーバーとして。

1
Ahmed Masud

マニュアルは here であると想定されています(ManualsをクリックしてからUser Manualをクリックしてください)。 しかし、残念ながらAdministrator ManualProgrammer Manualのリンクは壊れています。 (私はこれを報告し、それらは修正されるだろうと言われました。)

だから今のところ...

不足しているマニュアルは、 http://www.unixodbc.orgからunixODBC-2.3.4.tar.gzをダウンロードすることで見つかります。 / そして、それをアーカイブマネージャ(または同等のもの)で開き、次の3つのマニュアルを見てください。

/doc/AdministratorManual/index.html
/doc/ProgrammerManual/index.html
/doc/ProgrammerManual/Tutorial/index.html
0
Elliptical view