domingo, 4 de agosto de 2013

ODBC + SQL Server + Linux

É possível conectar-se a diversos bancos de dados via ODBC no Linux, de forma semelhante ao Windows.  Este artigo explica como conectar-se ao SQL Server via ODBC.

Para começar, é preciso instalar os seguintes pacotes: FreeTDS, UnixODBC e tdsodbc. No Debian, isso é feito com o seguinte comando:

sudo apt-get install freetds-bin unixodbc tdsodbc

Naturalmente, isso também funciona no Ubuntu. Em outras distros, você deverá instalar os pacotes equivalentes.

Feito isso, deverão surgir dois arquivos vazios, que só podem ser editados pelo root:
  • /etc/odbcinst.ini - Neste arquivo ficarão os caminhos dos drivers odbc;
  • /etc/odbc.ini - Aqui ficarão os DSNs (os dados das conexões);
O passo seguinte é encontrar o driver da FreeTDS, um arquivo de nome "libtdsodbc.so". Essa é uma parte chata, porque o arquivo pode estar em vários lugares diferentes, dependendo da distro, e você vai ter que procurar. No Debian Wheezy 32 bits, ele está na pasta /usr/lib/i386-linux-gnu/odbc/ .  Tendo achado o driver, edite o arquivo odbcinst.ini (como root) da seguinte forma:

[FreeTDS]
Driver = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so

Lembrando que o caminho do driver poderá ser diferente no seu caso. O nome em colchetes é o identificador do driver, que será usado a seguir.  Altere agora o arquivo odbc.ini para que fique mais ou menos assim:

[padaria]
Driver = FreeTDS
Description = Servidor da padaria
Trace = No
Server = 234.56.78
Database = padariadb
Port = 1433
TDS_Version = 7.0

Há uma série de detalhes aqui. O nome entre colchetes é o identificador DSN. O nome do driver tem que coincidir com o indentificador do arquivo odbcinst.ini.  "Trace" está negativada para dizer que não terá arquivo de log (isso pode ou não ser desejado). Logo em seguida vêm o endereço (ou nome) do servidor, o nome do banco, a porta e a versão do protocolo. A porta padrão do SQL Server é 1433. O protocolo 7.0 funciona para todos os SQL Server versão 2000 ou superior.

Pronto! Você já pode invocar uma conexão ODBC pelo DSN "padaria".