Procurando uma boa documentação dos arquivos odbc.ini e odbcinst.ini no Linux

9

Eu vi informações parciais, informações antigas, mas nada tão bom quanto os arquivos de amostra reais com breves comentários que tenho localmente.

Eu preciso entender a relação exata entre odbc.ini e odbcinst.ini . Superficialmente é bastante óbvio - no topo do arquivo odbc.ini há uma seção como:

[ODBC Data Sources]
MYDSN = MyDriverName
...

No entanto, não tenho certeza se posso, por exemplo, ter configurações no driver ou na seção DSN.

1) Eu tenho uma linha Driver = /path/to/file/.so em ambos os arquivos e os valores às vezes diferem. Isso faz sentido? Se sim, qual prevalece?

2) odbcinst.ini é um "protótipo" semelhante a JavaScript para odbc.ini ? Em outras palavras, se eu estiver criando vários DSNs com configurações comuns, posso promover configurações comuns de odbc.ini em odbcinst.ini ?

3) Qual é a diferença entre Driver e Setup em odbcinst.ini ? Eles parecem ter os mesmos valores. Essas configurações são específicas do banco de dados ou são universais?

    
por Leonid 08.08.2014 / 18:26

4 respostas

9

Eu uso FreeTDS on Debian para conectar um site com php a um banco de dados MS-SQL Server 2005 .

A explicação que posso dar aos arquivos de configuração:

/etc/odbc.ini

Mantém a instância mencionada no manipulador (por exemplo, php ) que se conecta ao banco de dados (veja o exemplo abaixo). A configuração define o servidor que precisa se conectar.

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

-

/etc/odbcinst.ini

Mantém a configuração da seção Driver em 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

Exemplo de código php para demonstrar como eu configuro e uso a conexão.

  $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 .. etc ..

Tenho certeza de que há muitas outras variáveis que podem ser definidas e usadas, mas essa é a explicação mais simples que posso fornecer sobre os arquivos que você perguntou.

    
por 18.08.2014 / 07:12
2

Se você olhar apenas para implementações do Unix, você terá algumas idéias interessantes sobre como o ODBC funciona. Nenhuma dessas implementações é 100% comparável à implementação de referência no Windows, produzida pelo mantenedor da especificação ODBC, ou seja, Microsoft .

Existem dois gerenciadores de drivers ODBC comumente encontrados no Unix. iODBC , cujo A documentação relevante para esta questão está aqui , é mantida e apoiada pelo meu empregador. UnixODBC é o outro, e foi discutido em outras respostas. Eles devem ser equivalentes à API entre si e à implementação do Windows, pois ambos são implementações independentes de plataforma do padrão.

Em termos simples, odbcinst.ini é um arquivo de registro e configuração para drivers ODBC em um ambiente, enquanto odbc.ini é um arquivo de registro e configuração para ODBC DSNs (Nomes de Fontes de Dados), geralmente baseado em drivers registrados no outro. .

Você teve algumas perguntas específicas ...

1) I have a line Driver = /path/to/file/.so in both files and the values sometimes differ. Does this even make sense? If so, which prevails?

O Driver = /path/to/file.so geralmente deve ser o mesmo em ambos os arquivos quando ambos são expressos como caminhos. Em odbc.ini , esta entrada pode, em vez disso, ser Driver = {name of driver} , em que o nome é indexado em odbcinst.ini . De um modo geral, as configurações em odbc.ini prevalecem sobre as configurações conflitantes em odbcinst.ini se elas existirem.

2) Is odbcinst.ini a JavaScript-like "prototype" for odbc.ini? In other words, if I am creating a number of DSNs with common settings, can I promote common settings from odbc.ini into odbcinst.ini?

Não, odbcinst.ini não é um "protótipo" dessa maneira. As configurações de odbcinst.ini são relevantes para o driver , mas não para as DSNs baseadas nesse driver.

3) What is the difference between Driver and Setup in odbcinst.ini? They seem to have the same values. Are these settings database-specific or are they universal?

Em odbcinst.ini , o Driver = refere-se à biblioteca de drivers e Setup = à biblioteca de configuração. O último é totalmente opcional e, quando existe, pode, mas não precisa ser usado durante uma conexão de dados; Ele é destinado principalmente para uso por um Administrador ODBC ao "configurar" essas conexões, para serem salvas como DSNs. Às vezes, essas bibliotecas são encontradas no mesmo arquivo físico, mas não precisam ser e, por exemplo, normalmente não estão no ambiente do OS X.

    
por 06.09.2015 / 04:55
1

É simples a diferença entre odbcinst.ini e odbc.ini do site unixodbc que é o primeiro hit do google:

The system file odbcinst.ini contains information about ODBC drivers available to all users, and the odbc.ini file contains information about DSN's available to all users. These "System DSN's" are useful for application such as web servers that may not be running as a real user and so will not have a home directory to contain a .odbc.ini file.

    
por 08.08.2014 / 18:35
0

Os manuais devem ser aqui (clique em Manuals then User Manual ). Mas infelizmente os links para Administrator Manual e Programmer Manual estão quebrados. (Eu relatei isso e me disseram que eles seriam corrigidos.)

Então, por enquanto ...

Os manuais que faltam são encontrados fazendo o download do unixODBC-2.3.4.tar.gz do link e em seguida, abra-o com o gerenciador de arquivos (ou algo semelhante) e observe estes três manuais:

/doc/AdministratorManual/index.html
/doc/ProgrammerManual/index.html
/doc/ProgrammerManual/Tutorial/index.html
    
por 17.10.2016 / 06:18