Cerchi una buona documentazione dei file odbc.ini e odbcinst.ini su Linux


11

Ho visto informazioni parziali, vecchie informazioni, ma niente di buono come i file di esempio reali con brevi commenti che ho localmente.

Ho bisogno di capire l'esatta relazione tra odbc.inie odbcinst.ini. Superficialmente è abbastanza ovvio - nella parte superiore del odbc.inifile c'è una sezione come:

[ODBC Data Sources]
MYDSN = MyDriverName
...

Tuttavia, non sono sicuro di poter, ad esempio, avere impostazioni nella sezione driver o DSN.

1) Ho una riga Driver = /path/to/file/.soin entrambi i file e i valori a volte differiscono. Ha senso anche questo? In tal caso, quale prevale?

2) È odbcinst.iniun "prototipo" simile a JavaScript per odbc.ini? In altre parole, se sto creando un numero di DSN con impostazioni comuni, posso promuovere impostazioni comuni da odbc.iniin odbcinst.ini?

3) Qual è la differenza tra Drivere Setupin odbcinst.ini? Sembrano avere gli stessi valori. Queste impostazioni sono specifiche del database o sono universali?



Penso che il link sopra potrebbe aiutare a rispondere. Pensaci, se configuri un file odbc.ini per l'origine dati ORACLE, come fa il sistema a sapere cos'è ORACLE, questo è ciò che definisce odbcinst.ini. Questo può essere solo locale a un insieme specifico di percorsi / software, anziché "a livello di sistema".
Schrute,

Risposte:


9

Uso FreeTDSsu Debianper collegare un phpsito Web guidato a un MS-SQL Server 2005database.

La spiegazione che posso dare ai file di configurazione:

/etc/odbc.ini

Contiene l'istanza a cui si fa riferimento all'interno del gestore (ad es. php) Che si collega al database (vedere l'esempio seguente). La configurazione definisce il server a cui deve connettersi.

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

-

/etc/odbcinst.ini

Contiene la configurazione per la Driversezione in 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

phpCodice di esempio per dimostrare come ho impostato e utilizzato la connessione.

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

ecc. ecc.

Sono sicuro che ci sono molte altre variabili che possono essere impostate e utilizzate, ma questa è la spiegazione più semplice che posso dare dei file di cui hai chiesto.


4

Se guardi solo le implementazioni di Unix, otterrai alcune idee interessanti su come funziona ODBC. Nessuna di queste implementazioni è paragonabile al 100% all'implementazione di riferimento su Windows, prodotta dal manutentore della specifica ODBC, ovvero Microsoft .

Esistono due gestori di driver ODBC che si trovano comunemente su Unix. iODBC , la cui documentazione relativa a questa domanda è qui , è gestita e supportata dal mio datore di lavoro. UnixODBC è l'altro ed è stato discusso in altre risposte. Queste sono pensate per essere API equivalenti tra loro e all'implementazione di Windows, poiché entrambe sono implementazioni indipendenti dalla piattaforma dello standard.

In termini semplici, odbcinst.iniè un file di registro e di configurazione per i driver ODBC in un ambiente, mentre odbc.iniè un file di registro e di configurazione per i DSN ODBC (Data Source Names), in genere basato su driver registrati nell'altro.

Hai avuto alcune domande specifiche ...

1) Ho una riga Driver = /path/to/file/.soin entrambi i file e i valori a volte differiscono. Ha senso anche questo? In tal caso, quale prevale?

L' Driver = /path/to/file.sodovrebbero essere generalmente la stessa in entrambi i file quando entrambi sono espressi come percorsi. In odbc.ini, questa voce potrebbe invece essere Driver = {name of driver}dove il nome è come indicizzato odbcinst.ini. In generale, le impostazioni odbc.iniprevalgono sulle impostazioni in conflitto odbcinst.inise esistono.

2) È odbcinst.iniun "prototipo" simile a JavaScript per odbc.ini? In altre parole, se sto creando un numero di DSN con impostazioni comuni, posso promuovere impostazioni comuni da odbc.iniin odbcinst.ini?

No, odbcinst.ininon è un "prototipo" in questo modo. odbcinst.inile impostazioni sono rilevanti per il driver , ma non per i DSN basati su quel driver.

3) Qual è la differenza tra Drivere Setupin odbcinst.ini? Sembrano avere gli stessi valori. Queste impostazioni sono specifiche del database o sono universali?

In odbcinst.ini, il si Driver =riferisce alla libreria dei driver e Setup =alla libreria di installazione. Quest'ultimo è del tutto facoltativo e, quando esiste, potrebbe non essere necessario utilizzarlo durante una connessione dati; è destinato principalmente all'uso da parte di un amministratore ODBC quando "imposta" tali connessioni, da salvare come DSN. A volte, queste librerie si trovano nello stesso file fisico, ma non è necessario che lo siano e, ad esempio, in genere non si trovano nell'ambiente OS X.


1

Va bene la semplice differenza tra odbcinst.ini e odbc.ini dal sito unixodbc che è il primo successo su google:

Il file di sistema odbcinst.ini contiene informazioni sui driver ODBC disponibili per tutti gli utenti e il file odbc.ini contiene informazioni sui DSN disponibili per tutti gli utenti. Questi "DSN di sistema" sono utili per applicazioni come server Web che potrebbero non essere in esecuzione come utenti reali e quindi non avranno una home directory per contenere un file .odbc.ini.


Grazie. Ho dimenticato di dire che ho dedotto molto dalla sintassi - in effetti ogni DSN deve specificare un driver nella parte superiore di odbc.ini con la sintassi {DSN} = {Driver} ma sono ancora molto confuso.
Leonid,

0

Si suppone che i manuali siano qui (fare clic Manualsquindi User Manual). Ma sfortunatamente i collegamenti per Administrator Manuale il Programmer Manualsono interrotti. (Ho segnalato questo e mi è stato detto che saranno risolti.)

Quindi per ora ...

I manuali mancanti si trovano scaricando unixODBC-2.3.4.tar.gz da http://www.unixodbc.org/ e quindi aprirlo con il gestore degli archivi (o simili) e guardare questi tre manuali:

/doc/AdministratorManual/index.html
/doc/ProgrammerManual/index.html
/doc/ProgrammerManual/Tutorial/index.html
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.