Se você observar apenas as implementações do Unix, 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 driver ODBC comumente encontrados no Unix. O iODBC , cuja documentação relevante para esta pergunta está aqui , é mantido e suportado pelo meu empregador. O UnixODBC é o outro, e foi discutido em outras respostas. Elas devem ser equivalentes à API e à implementação do Windows, pois ambas 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 DSNs ODBC (nomes de fonte de dados), geralmente baseados em drivers registrados no outro.
Você teve algumas perguntas específicas ...
1) Eu tenho uma linha Driver = /path/to/file/.so
nos dois arquivos e os valores às vezes diferem. Isso faz algum sentido? Se sim, qual prevalece?
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
, essa entrada pode ser Driver = {name of driver}
onde o nome está indexado odbcinst.ini
. De um modo geral, as configurações odbc.ini
prevalecem sobre as configurações conflitantes, odbcinst.ini
se existirem.
2) É odbcinst.ini
um "protótipo" semelhante ao JavaScript odbc.ini
? Em outras palavras, se estou criando vários DSNs com configurações comuns, posso promover configurações comuns de odbc.ini
para odbcinst.ini
?
Não, odbcinst.ini
não é um "protótipo" dessa maneira. odbcinst.ini
as configurações são relevantes para o driver , mas não para os DSNs baseados nesse driver.
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?
Em odbcinst.ini
, Driver =
refere-se à biblioteca de drivers e Setup =
à biblioteca de instalação. O último é totalmente opcional e, quando existe, pode mas não precisa ser usado durante uma conexão de dados; destina-se principalmente ao uso de 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 estar e, por exemplo, normalmente não estão no ambiente OS X.