Data

29 set, 2008

Acessando o SQL Server no Linux

Publicidade

Olá, pessoal. Na coluna desta semana vou mostrar como acessar o SQL Server a partir do Linux utilizando a biblioteca FreeDTS. Este acesso é útil para aqueles que trabalham em um ambiente misto com servidores Linux e Windows.

A idéia de poder acessar o SQL Server por meio do Linux já é bem antiga. Devido ao fato que o SQL Server não pode ser executado no Linux (mesmo no WINE), o que resta para os desenvolvedores é trabalhar utilizando o Linux como cliente que acessa o SQL Server a partir de uma biblioteca de terceiros.

Existem diversas maneiras de se acessar o SQL Server pelo Linux. Dentre as principais destaco o driver JDBC que a própria Microsoft disponibilizou, chamado jTDS. Já comentei como montar um exemplo de conexão em Java com este driver em um artigo no iMasters, que pode ser acessado clicando aqui.

Porém o jTDS é mais voltado para o desenvolvimento de aplicações. Se imaginarmos um ambiente corporativo onde existem vários servidores Linux e Windows faz sentido contar com uma ferramenta de linha de comando que faça a conexão para o SQL Server a partir do shell do Linux. Foi com este objetivo que a biblioteca de código livre FreeTDS foi desenvolvida.

A biblioteca FreeTDS já existe há algum tempo e inicialmente foi desenvolvida utilizando técnicas de engenharia reversa, ou seja, os desenvolvedores analisavam os dados trocados entre os clientes e o SQL Server e montaram uma biblioteca que implementa o protocolo proprietário da Microsoft para a conexão com o SQL Server, chamado de TDS (Tabular Data Stream). Recentemente a Microsoft liberou a especificação completa deste protocolo, que está disponível no seguinte endereço:

http://msdn.microsoft.com/en-us/library/cc448435.aspx

Neste artigo mostrarei como instalar e testar a biblioteca FreeTDS na distribuição Ubuntu do Linux a partir do código fonte. Com pequenos ajustes é possível instalar a biblioteca FreeTDS sem maiores dificuldades em outras distribuições. Apenas para constar nas referências, utilizei como base os seguintes artigos para montar esta coluna:

http://blogs.sqlservercentral.com/haidong_ji/archive/2006/09/01/867.aspx

http://www.phpbrasil.com/articles/print.php/id/238

Vale a pena mencionar que existem outros meios de instalação mais fáceis, como pacotes RPM (para distribuições Red Hat e similares) e o uso de gerenciadores de aplicações, como o apt-get e o synaptic. Porém neste artigo preferi instalar a FreeTDS diretamente pelos fontes devido à uma opção que precisa ser configurada na instalação.

O primeiro passo é verificar os pré-requisitos para a compilação. Como iremos compilar o código fonte da FreeTDS é preciso contar com um compilador GCC e a ferramenta MAKE. No meu caso utilizei o gcc versão 4.3.2 e o GNU make 3.81. Em seguida devemos fazer o download do arquivo que contém os códigos fontes da biblioteca.

Podemos obter o código fonte diretamente do site do projeto FreeTDS, cujo endereço é www.freetds.org. Porém nesta coluna obterei os fontes de um local secundário, também conhecido como mirror.

O primeiro passo para a instalação é obter o arquivo compactado freedtds-stable.tgz. Este arquivo é chamado de tarball e contém todos os códigos fontes compactados. A Figura 1 mostra como obter este arquivo a partir do comando wget, mostrado abaixo. Contudo, nada impede o leitor de fazer o download do arquivo diretamente pelo browser, desde que acerte as permissões após o download do mesmo.

wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz

Figura 1. Download do arquivo contendo o código fonte da FreeTDS.Figura 1. Download do arquivo contendo o código fonte da FreeTDS.

O próximo passo é descompactar o arquivo .tgz. Para isso basta executar o comando TAR como mostrado abaixo. O resultado da descompactação cria um sub-diretório chamado freedts-0.82, como mostra a Figura 2. Notem que talvez o nome do sub-diretório seja diferente, dependendo da versão estável da biblioteca FreeTDS que estiver disponível.

tar -zxvf freetds-stable.gz

Figura 2. Sub-diretório freedts-0.82 criado após a descompactação do arquivoFigura 2. Sub-diretório freedts-0.82 criado após a descompactação do arquivo

Até agora sem grandes dificuldades. O próximo passo é entrar no sub-diretório e preparar a compilação dos arquivos. Estes dois passos são feitos pelos comandos CD e CONFIGURE, respectivamente. Porém o comando que configura o ambiente para a compilação deve receber o parâmetro –with-tdsver=8.0, pois este parâmetro indica que utilizaremos a versão 8.0 da biblioteca tornando-a compatível com o SQL Server 2005. Os comandos são apresentados abaixo e mostrados na Figura 3.

cd freedts-0.82
./configure --with-tdsver=8.0

Figura 3. Preparando a compilação da biblioteca FreeTDSFigura 3. Preparando a compilação da biblioteca FreeTDS

Após a configuração estamos prontos para começar a compilar o código fonte. O próximo passo é executar o comando MAKE que efetivamente compilará o código fonte. Devemos ficar atentos a este passo, pois qualquer erro aqui deverá ser resolvido antes de continuarmos. A Figura 4 mostra a execução do comando MAKE. Neste ponto podemos esperar um pouco, pois a execução poderá levar alguns minutos dependendo do hardware.

Figura 4. Comando MAKE sendo executado.Figura 4. Comando MAKE sendo executado.

Caso o comando make tenha sido executado com sucesso poderemos continuar a instalação. O que falta fazer agora é instalar os binários e deixar o ambiente preparado. Para isso basta executar o comando MAKE INSTALL como a Figura 5 mostra. Este é o passo final para a instalação da FreeTDS.

Figura 5. Instalando os arquivos binários.Figura 5. Instalando os arquivos binários

Se tudo der certo, a biblioteca FreeTDS já estará instalada. Além da biblioteca contamos com um programa muito útil chamado TSQL, que foi colocado no diretório /usr/local/bin do servidor Linux pelo processo de instalação. Este programa é semelhante ao utilitário isql.exe e permite que a conexão com um SQL Server a partir do shell, facilitando o teste de acesso. Porém é preciso indicar três parâmetros: o servidor, pela chave -S, o nome do usuário, pela chave -U e a senha, pela chave -P. Não há como se conectar no SQL Server utilizando o mode de autenticação Windows, pois a bibliteca FreeTDS não suporta este modo.

A Figura 6 mostra um exemplo de conexão da FreeTDS com um SQL Server 2005 (endereço 192.168.1.32) e com um SQL Server 2000 (endereço 192.168.1.8). O comando SELECT @@version é executado para mostrar a versão dos dois SQL Servers utilizados.

Figura 6. Utilizando o programa TSQL para se conectar ao SQL Server 2000 e 2005Figura 6. Utilizando o programa TSQL para se conectar ao SQL Server 2000 e 2005

E com isso terminamos a instalação da biblioteca FreeTDS no Linux. Existem outras maneiras de se utilizar diretamente esta biblioteca em linguagens de programação como o PHP, mas isso é o foco para outro artigo.

Um grande abraço a todos a até a próxima.