Recherche d'une bonne documentation des fichiers odbc.ini et odbcinst.ini sous Linux


11

J'ai vu des informations partielles, des informations anciennes, mais rien de mieux que les fichiers d'exemple réels avec de brefs commentaires que j'ai localement.

J'ai besoin de comprendre la relation exacte entre odbc.iniet odbcinst.ini. Superficiellement, c'est assez évident - en haut du odbc.inifichier, il y a une section comme:

[ODBC Data Sources]
MYDSN = MyDriverName
...

Cependant, je ne sais pas si je peux, par exemple, avoir des paramètres dans le pilote ou la section DSN.

1) J'ai une ligne Driver = /path/to/file/.sodans les deux fichiers et les valeurs diffèrent parfois. Est-ce même logique? Si oui, lequel prévaut?

2) Un odbcinst.ini"prototype" de type JavaScript est-il prévu odbc.ini? En d'autres termes, si je crée un certain nombre de DSN avec des paramètres communs, puis-je promouvoir des paramètres communs de odbc.inien odbcinst.ini?

3) Quelle est la différence entre Driveret Setupen odbcinst.ini? Ils semblent avoir les mêmes valeurs. Ces paramètres sont-ils spécifiques à la base de données ou sont-ils universels?



Je pense que le lien ci-dessus aiderait à répondre. Pensez-y ceci, si vous configurez un fichier odbc.ini pour la source de données ORACLE, comment le système sait-il ce qu'est ORACLE, c'est ce que définit odbcinst.ini. Cela peut être juste local pour un ensemble spécifique de chemins / logiciels, au lieu de "à l'échelle du système".
Schrute

Réponses:


9

J'utilise FreeTDSsur Debianpour connecter un phpsite Web piloté à une MS-SQL Server 2005base de données.

L'explication que je peux donner aux fichiers de configuration:

/etc/odbc.ini

Contient l'instance à laquelle il est fait référence dans le gestionnaire (par exemple php) qui se connecte à la base de données (voir l'exemple ci-dessous). La configuration définit le serveur auquel il doit se connecter.

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

-

/etc/odbcinst.ini

Contient la configuration de la Driversection dans 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

Exemple de phpcode pour montrer comment j'ai configuré et utilisé la connexion.

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

etc..

Je suis sûr qu'il existe de nombreuses autres variables qui peuvent être définies et utilisées, mais c'est l'explication la plus simple que je puisse donner des fichiers que vous avez demandés.


4

Si vous ne regardez que les implémentations Unix, vous aurez des idées intéressantes sur le fonctionnement d'ODBC. Aucune de ces implémentations n'est 100% comparable à l'implémentation de référence sur Windows, produite par le mainteneur de la spécification ODBC, c'est-à-dire Microsoft .

Il existe deux gestionnaires de pilotes ODBC couramment trouvés sur Unix. iODBC , dont la documentation pertinente à cette question est ici , est maintenue et prise en charge par mon employeur. UnixODBC est l'autre, et a été discuté dans d'autres réponses. Ceux-ci sont censés être équivalents à l'API les uns aux autres et à l'implémentation de Windows, car les deux sont des implémentations indépendantes de la plate-forme de la norme.

En termes simples, il odbcinst.inis'agit d'un fichier de registre et de configuration pour les pilotes ODBC dans un environnement, tandis qu'il odbc.inis'agit d'un fichier de registre et de configuration pour les DSN ODBC (Data Source Names), généralement basé sur des pilotes enregistrés dans l'autre.

Vous aviez quelques questions spécifiques ...

1) J'ai une ligne Driver = /path/to/file/.sodans les deux fichiers et les valeurs diffèrent parfois. Est-ce même logique? Si oui, lequel prévaut?

Le Driver = /path/to/file.sodevrait généralement être le même dans les deux fichiers lorsque les deux sont exprimés sous forme de chemins. Dans odbc.ini, cette entrée peut être à la place Driver = {name of driver}où le nom est tel qu'indexé odbcinst.ini. De manière générale, les paramètres de odbc.iniprévalent sur les paramètres conflictuels dans le odbcinst.inicas échéant.

2) Un odbcinst.ini"prototype" de type JavaScript est-il prévu odbc.ini? En d'autres termes, si je crée un certain nombre de DSN avec des paramètres communs, puis-je promouvoir des paramètres communs de odbc.inien odbcinst.ini?

Non, ce odbcinst.inin'est pas un "prototype" de cette façon. odbcinst.iniles paramètres sont pertinents pour le pilote , mais pas pour les DSN basés sur ce pilote.

3) Quelle est la différence entre Driveret Setupen odbcinst.ini? Ils semblent avoir les mêmes valeurs. Ces paramètres sont-ils spécifiques à la base de données ou sont-ils universels?

Dans odbcinst.ini, le Driver =fait référence à la bibliothèque de pilotes et Setup =à la bibliothèque de configuration. Ce dernier est entièrement facultatif, et lorsqu'il existe, il peut mais ne doit pas être utilisé lors d'une connexion de données; il est principalement destiné à être utilisé par un administrateur ODBC lors de la "configuration" de telles connexions, pour être enregistré en tant que DSN. Parfois, ces bibliothèques se trouvent dans le même fichier physique, mais elles n'ont pas besoin de l'être et, par exemple, ne se trouvent généralement pas dans l'environnement OS X.


1

Okay simple différence entre odbcinst.ini et odbc.ini du site unixodbc qui est le premier hit sur google:

Le fichier système odbcinst.ini contient des informations sur les pilotes ODBC disponibles pour tous les utilisateurs et le fichier odbc.ini contient des informations sur les DSN disponibles pour tous les utilisateurs. Ces "DSN système" sont utiles pour des applications telles que les serveurs Web qui ne fonctionnent pas en tant qu'utilisateur réel et qui n'auront donc pas de répertoire personnel pour contenir un fichier .odbc.ini.


Merci. J'ai oublié de mentionner que j'ai déduit cela de la syntaxe - en effet, chaque DSN doit spécifier un pilote tout en haut de odbc.ini avec la syntaxe {DSN} = {Driver} mais je suis toujours très confus.
Leonid

0

Les manuels sont supposés être ici (cliquez Manualsensuite User Manual). Mais malheureusement, les liens pour Administrator Manualet le Programmer Manualsont rompus. (J'ai signalé cela et on m'a dit qu'ils seraient réparés.)

Alors pour l'instant...

Les manuels manquants sont trouvés en téléchargeant unixODBC-2.3.4.tar.gz depuis http://www.unixodbc.org/ puis en l'ouvrant avec le gestionnaire d'archives (ou similaire) et en consultant ces trois manuels:

/doc/AdministratorManual/index.html
/doc/ProgrammerManual/index.html
/doc/ProgrammerManual/Tutorial/index.html
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.