Submarino.com.br

Tutorial de Configuração para Acesso ao MsSQL Server Via Servidor LAMP

August 4th, 2008 por xorna |

Bem, para não perder o embalo por aqui, e a pedidos de alguns colegas meus de trabalho aqui do MEC, estou estou escrevendo um mini tutorial para “fazer funcionar” utilizarmos sem problemas as funções mssql do PHP rodando em um servidor LAMP (Leia-se: Linux, Apache, Mysql, PHP (Perl ou Python)) e assim termos um acesso ilimitado aos recursos do servidor MsSQL Server.

Para tanto não precisamos de muitas armas na mão, somente algumas extensões, bibliotecas e configurações finas. Pois bem, como alguns sabe, as funções mssql utilizam o ODBC e Freetds como base para suas operações. Então vamos à instalação de pacotes =):

# apt-get install php5-mssql freetds-dev tdsodbc unixodbc unixodbc-bin

Bem, segundo muitos materiais que encontrei por aí em inglês, garantem que o Freetds roda “fine” com o unixodbc, por isso decidi partir para esta última tentativa em busca da “felicidade” (por que ser feliz é usar mysql ou pgsql, não mssql). Então depois de instalar o freetds e o unixodbc, descobri que não se trataba apenas de instalar e deu, eu precisaria neste caso configurar algumas coisinhas, mas nada de mais. Primeiramente configurar o freetds, muito simples, só precisamos adicionar o driver padrão para conectarmos e mapear um servidor. Adicione o mapeamento ao final do arquivo /etc/freetds/freetds.conf conforme exemplo abaixo:

[MeuBanco]
host = meu.banco.dedados
port = 1433
tds version = 8.0
; A versão do tds tem um valor de acordo com o banco de dados a ser conectado, no meu caso precisei utilizar para o MsSql Server 2000 (Driver 8.0)
Abaixo vou listar todas as versões disponiveis para acesso via freetds:
* Sybase before System 10, Microsoft SQL Server 6.x:	tds version = 4.2
* Sybase System 10 and above:	tds version =	5.
* Microsoft SQL Server 7.0:	tds version =	7.0
* Microsoft SQL Server 2000:	tds version =	8.0
** Caso haja dúvida, teste com uma versão menor

Em alguns casos, parando por aqui já está tudo certo, vc tem acesso livre para conexão, mas agora estarei postando um extra, que é para garantir que seu apache/php irá autenticar diretamente no servidor mssql e você poderá acessar esse banco a partir de qualquer software linux, incluindo o OpenOffice Base. Então vamos lá para a configuração do UNIXODBC. Primeiramente você deve iniciar a edição do arquivo /etc/odbc.ini. Inserindo as seguintes configurações:

 [meubd]
Description     = FreeTDS
Driver          = FreeTDS
Servername      = meubd
Database        = aaa
UID             = bbb
PWD             = *******
Port            = 1433
E no arquivo /etc/odbcinst.ini adicione essas configurações:
 [FreeTDS]
Description     = Para conectar com MSSQL e Sysbase
Driver          = /usr/lib/odbc/libtdsodbc.so
Driver64        = /usr/lib
Setup           = /usr/lib/odbc/libtdsS.so
Setup64         = /usr/lib
UsageCount      = 1
CPTimeout       =
CPReuse         =

Vá até o arquivo /etc/php5/apache2/php.ini e faça a seguinte modificação:

#descomentem e caso for necessario modifiquem o charset da linha:
msssql.charset = "UTF-8"

Bom pessoal, acho que é somente isso, qualquer dúvida, problema ou sugestão em relação a esse passo-a-passo podem entrar em contato comigo que buscaremos a melhor solução.

Ps: Não esqueçam de reiniciar o daemon do apache!

Compartilhe e socialize:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • E-mail this story to a friend!
  • LinkArena
  • LinkedIn
  • Live
  • Netvibes
  • Socialogs
  • Technorati
  • ThisNext
  • Yahoo! Buzz
  • YahooMyWeb

6 comentários, mais um não seria um problema.

  1. Rogerio says:

    Cara, tenho um problema com conexão com tds da uma mensagem:

    Password:
    Msg 20017, Level 9, State -1, Server OpenClient, Line -1
    Unexpected EOF from the server
    Msg 20002, Level 9, State -1, Server OpenClient, Line -1
    Adaptive Server connection failed
    There was a problem connecting to the server

    Ja configurei como você descreveu.

  2. xorna says:

    buenas amigo, primeiramente me desculpe a demora em responder o tópico, mas realmente passei dias e noites em meus projetos… bom, esse erro acontece exatemente quando?

  3. Alessandro says:

    o package php5-mssql existe?
    não consigo instalar, diz que não existe.

  4. xorna says:

    Bom amigo, veja na configuração de seus repositórios, utilize o servidor principal do Ubuntu e programas mantidos por terceiros, talvez seja isso.

  5. Giorgeano says:

    Não estou tendo sucesso com minha conexão, tenho desenvolvido um projeto em delphi e não tive sucesso na conexão MSSQL não localiza. Já o meu projeto no netbeans consigo com perfeição. Ficaria grato por sua ajuda se posivel.

  6. xorna says:

    Então, o java se não me engano faz isso tudo com o JDBC, esses passos resolveram meu problema para o acesso via apache, com o delphi talvez ele mesmo tenha o driver para fazer esta conexão

Deixe seu recado

Spam Protection by WP-SpamFree

Clicky Web Analytics